1900
InsertControlItem / UserEditor / A2X:

public void init()
{
	COM com_ConditionalFormat,com_Items,com_Object;
	anytype var_ConditionalFormat,var_Items,var_Object;
	int h,hX;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.BackColor(WinApi::RGB2int(240,240,240));
	/*should be called during the form's activate method*/ exg2antt1.Chart().PaneWidth(true,0);
	var_ConditionalFormat = COM::createFromObject(exg2antt1.ConditionalFormats()).Add("1 = 1"); com_ConditionalFormat = var_ConditionalFormat;
	com_ConditionalFormat.Bold(true);
	COM::createFromVariant(exg2antt1.Columns().Add("Type")).Alignment(2/*RightAlignment*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("1. A ProgID such as \"MSCAL.Calendar.7\"");
		com_Items.ItemDivider(h,0);
		hX = com_Items.InsertControlItem(0,"MSCAL.Calendar","");
		var_Object = COM::createFromObject(com_Items.ItemObject(hX)); com_Object = var_Object;
		com_Object.BackColor(WinApi::RGB2int(255,255,255));
		h = com_Items.AddItem("2. A CLSID such as \"{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}\"");
		com_Items.ItemDivider(h,0);
		hX = com_Items.InsertControlItem(0,"{0036F83C-D892-4B7B-AA0B-BEDD8D16A738}","");
		h = com_Items.AddItem("3. A URL such as \"http://www.exontrol.com\"");
		com_Items.ItemDivider(h,0);
		hX = com_Items.InsertControlItem(0,"http://www.exontrol.com","");
		h = com_Items.AddItem("4. A reference to an Active document such as \"file://\\\\Documents\\MyDoc.doc\"");
		com_Items.ItemDivider(h,0);
		hX = com_Items.InsertControlItem(0,"file://C:\\empesting.xml","");
		h = com_Items.AddItem("5.A fragment of HTML such as \"MSHTML:<HTML><BODY>This is a line of text</BODY></HTML>\"");
		com_Items.ItemDivider(h,0);
		hX = com_Items.InsertControlItem(0,"MSHTML:<HTML><BODY>This is a <b>line of</b> text</BODY></HTML>","");
		com_Items.ItemHeight(hX,56);
		h = com_Items.AddItem("6.Anything, if it is preffixed by \"A2X:\"");
		com_Items.ItemDivider(h,0);
		hX = com_Items.InsertControlItem(0,"A2X:TOC24.Toc24Ctrl.1","");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(true,0);
}
*/
1899
How do I add a RichTextBox editor
// UserEditorOleEvent event - Occurs when an user editor fires an event.
void onEvent_UserEditorOleEvent(COM   _Object,COM   _Ev,COMVariant /*bool*/   _CloseEditor,int   _Item,int   _ColIndex)
{
	;
	print( _Ev );
}

public void init()
{
	COM com_Editor,com_Items,com_RichTextBox;
	anytype var_Editor,var_Items,var_RichTextBox;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DrawGridLines(-1/*exAllLines*/);
	exg2antt1.DefaultItemHeight(32);
	var_Editor = COM::createFromVariant(exg2antt1.Columns().Add("RICHTEXT")).Editor(); com_Editor = var_Editor;
		com_Editor.EditType(16/*UserEditorType*/);
		com_Editor.UserEditor("RICHTEXT.RichtextCtrl","");
		// Add 'Microsoft Rich Textbox Control 6.0 (SP4)(richtx32.ocx)' reference to your project.
		var_RichTextBox = com_Editor.UserEditorObject(); com_RichTextBox = var_RichTextBox;
			com_RichTextBox.AutoVerbMenu(true);
			com_RichTextBox.TextRTF("{\\rtf1\\ansi{\\fonttbl\\f0\\fswiss Helvetica;}\\f0\\pard\\r\\nThis is some {\\b bold} text.\\par\\r\\n}");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("RICHTEXT.RichtextCtrl");
	exg2antt1.EndUpdate();
}
1898
Is it possible to trap a double-click event on a specific cell and when that happens, to set the cell to a specific value
// DblClick event - Occurs when the user dblclk the left mouse button over an object.
void onEvent_DblClick(int   _Shift,int   _X,int   _Y)
{
	int h;
	;
	h = exg2antt1.ItemFromPoint(-1,-1,c,hit);
	print( exg2antt1.Items().CellValue(h,c) );
}

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.DrawGridLines(-2/*exRowLines*/);
	exg2antt1.Columns().Add("C1");
	exg2antt1.Columns().Add("C2");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem("Item 1"),COMVariant::createFromInt(1),"Item 2");
		com_Items.CellValue(com_Items.AddItem("Item 3"),COMVariant::createFromInt(1),"Item 4");
		com_Items.CellValue(com_Items.AddItem("Item 5"),COMVariant::createFromInt(1),"Item 6");
	exg2antt1.EndUpdate();
}
1897
How can I display dates in DD/MM/YYYY format

public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ScrollBySingleLine(false);
	exg2antt1.Columns().Add("Date");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.ItemDivider(com_Items.AddItem("Different Date Formats"),0);
		com_Items.FormatCell(com_Items.AddItem(COMVariant::createFromDate(str2Date("12/1/1971",213))),COMVariant::createFromInt(0),"((shortdateF(value) mid 4) left 2) + `/` + (shortdateF (value) left 2) + `/` + (shortdateF (value) right 4)");
		com_Items.FormatCell(com_Items.AddItem(COMVariant::createFromDate(str2Date("12/1/1971",213))),COMVariant::createFromInt(0),"(1 array (0:=(shortdateF(value) split `/`))) + `/` + (0 array (=:0) ) + `/` + (2 array (=:0) )");
		com_Items.FormatCell(com_Items.AddItem(COMVariant::createFromDate(str2Date("12/1/1971",213))),COMVariant::createFromInt(0),"((`0` + day(value) ) right 2) + `/` + ((`0` + month(value) ) right 2) + `/` + year(value)");
		com_Items.FormatCell(com_Items.AddItem(COMVariant::createFromDate(str2Date("12/1/1971",213))),COMVariant::createFromInt(0),"day(value) + `/` + month(value) + `/` + year(value)");
		com_Items.FormatCell(com_Items.AddItem(COMVariant::createFromDate(str2Date("12/1/1971",213))),COMVariant::createFromInt(0),"year(value) + ` - ` + day(value) + ` - ` + month(value)");
		h = com_Items.AddItem(COMVariant::createFromDate(str2Date("12/1/1971",213)));
		com_Items.ItemHeight(h,24);
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),1/*exHTML*/);
		com_Items.FormatCell(h,COMVariant::createFromInt(0),"`<b>` + year(value) + `</b><off -4> ` + day(value) + ` - ` + month(value)");
		com_Items.ItemDivider(com_Items.AddItem("Predefined Date Formats"),0);
		com_Items.FormatCell(com_Items.AddItem(COMVariant::createFromDate(str2Date("12/1/1971",213))),COMVariant::createFromInt(0),"value");
		com_Items.FormatCell(com_Items.AddItem(COMVariant::createFromDate(str2Date("12/1/1971",213))),COMVariant::createFromInt(0),"shortdateF(value)");
		com_Items.FormatCell(com_Items.AddItem(COMVariant::createFromDate(str2Date("12/1/1971",213))),COMVariant::createFromInt(0),"shortdate(value)");
		com_Items.FormatCell(com_Items.AddItem(COMVariant::createFromDate(str2Date("12/1/1971",213))),COMVariant::createFromInt(0),"longdate(value)");
	exg2antt1.EndUpdate();
}
1896
I have noticed that the column gets resized once I release the mouse. I have a column that displays multiple-lines cells, and the text gets wrapped only when user releases the mouse. Is it possible to get resized contiguously as I had before
public void init()
{
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ScrollBySingleLine(false);
	exg2antt1.DrawGridLines(2/*exVLines*/);
	exg2antt1.ColumnsAllowSizing(true);
	COM::createFromVariant(exg2antt1.Columns().Add("Column A (cont)")).Def(64/*exColumnResizeContiguously*/,COMVariant::createFromBoolean(true));
	exg2antt1.Columns().Add("Column 1");
	COM::createFromVariant(exg2antt1.Columns().Add("Column B (cont)")).Def(64/*exColumnResizeContiguously*/,COMVariant::createFromBoolean(true));
	exg2antt1.Columns().Add("Column 2");
	exg2antt1.EndUpdate();
}
1895
How do I get the column from cursor, when it hovers the empty portion of the items section
// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	int i;
	;
	i = exg2antt1.ItemFromPoint(0,-1,c,hit);
	print( "Column" );
	print( c );
}

public void init()
{
	int i;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DrawGridLines(2/*exVLines*/);
	exg2antt1.Columns().Add("Column 0");
	exg2antt1.Columns().Add("Column 1");
	exg2antt1.Columns().Add("Column 2");
	exg2antt1.EndUpdate();
}
1894
How do I add items once the user clicks the empty area
// Click event - Occurs when the user presses and then releases the left mouse button over the tree control.
void onEvent_Click()
{
	COM com_Items;
	anytype var_Items;
	int i;
	;
	i = exg2antt1.ItemFromPoint(0,-1,c,hit);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(i),COMVariant::createFromInt(1),c);
}

public void init()
{
	COM com_Items;
	anytype var_Items;
	int i;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Number of Items to Add");
	exg2antt1.Columns().Add("Click on Column");
	exg2antt1.EndUpdate();
}
1893
Is there an easy way to get an effect like in a Microsoft Access / SQL-Server Table view, where you can scroll-up till the last row containing data is displayed as top-row

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void onEvent_AddItem(int   _Item)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(_Item,"Task",com_Items.CellValue(_Item,COMVariant::createFromInt(2)),com_Items.CellValue(_Item,COMVariant::createFromInt(4)));
}

public void init()
{
	COM com_Chart,com_Items,com_rs;
	anytype rs,var_Chart,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.HasLines(0/*exNoLine*/);
	exg2antt1.ColumnAutoResize(false);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",1/*adOpenKeyset*/,1/*adLockReadOnly*/);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("10/21/1994",213)));
		com_Chart.LevelCount(2);
	exg2antt1.DataSource(rs);
	exg2antt1.ScrollBars(2051/*exVScrollEmptySpace | exBoth*/);
	exg2antt1.ScrollPos(true,exg2antt1.Items().ItemCount());
	exg2antt1.EndUpdate();
}
1892
Is there any option to stop events
// AddItem event - Occurs after a new Item has been inserted to Items collection.
void onEvent_AddItem(int   _Item)
{
	;
	print( "AddItem event is fired only if FreezeEvents(False) is called" );
}

// AddLink event - Occurs when the user links two bars using the mouse.
void onEvent_AddLink(str   _LinkKey)
{
	;
	print( "AddLink event is fired only if FreezeEvents(False) is called" );
}

// BarResize event - Occurs when a bar is moved or resized.
void onEvent_BarResize(int   _Item,COMVariant   _Key)
{
	;
	print( "BarResize event is fired only if FreezeEvents(False) is called" );
}

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1,h2;
	;

	super();

	exg2antt1.FreezeEvents(true);
	exg2antt1.BeginUpdate();
	exg2antt1.DefaultItemHeight(24);
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Task 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"");
		h2 = com_Items.AddItem("Task 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"");
		com_Items.AddLink("L1",h1,"",h2,"");
		com_Items.SchedulePDM(0,"");
	exg2antt1.EndUpdate();
	exg2antt1.FreezeEvents(false);
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1891
How do I specify a more intensive color if using RenderType property

public void init()
{
	COM com_Appearance,com_Bar,com_Bar1,com_Chart,com_Items;
	anytype var_Appearance,var_Bar,var_Bar1,var_Chart,var_Items;
	int hSummaryJ,hSummaryK,hTaskJ,hTaskK;
	str var_s,var_s1;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Appearance = exg2antt1.VisualAppearance(); com_Appearance = var_Appearance;
		com_Appearance.RenderType(-16777216);
		var_s = "gBFLBCJwBAEHhEJAAEhABN0GACAADACAxRDAMgBQKAAzQFAYahuGSGAAGMYxQgmFgAQhFcZQSKUOQTDKMIziYBYJhEMQyDAAUIjOKsIhkGYcZAGQBJCjWGodQLOEgwHI";
		var_s = var_s + "ERQjEyUJAGGQIHhyPYbUbGUpQHKkeRtGqgBgoKhKEouNYgAbGYIwTRsdyfDSXBpEWwbDgkNQwWTDNoRDIUQStCysaYjOpnfrUAJ1P7FdQ1NJkXRhGSSK7maapaiCSZ6S";
		var_s = var_s + "TCMj1FhVKSNJ7DQKhGpgKh/ApgYpQOK4fLNXyRBK4QAyKA6bgPFZOZbFViaXY1V5bNKrcjhHQwAyHJ4XXRdV4YRAkUT4GqiJKGSYcQhuXZWbRqO6ABhef6DRThc6jKpF";
		var_s = var_s + "HIE4llEcojHqSZNgoIxnlgd5thsLREleL43gsYZ9BkaAYkMAgAm+CxGDWWAtiKCRfjcdRgHoHYnicUwgAIEIREAaQYkcQZUHIGRUDQJBOEYRAhDYCxGgMZAkCgdYQhaX";
		var_s = var_s + "QIAYERwQuahXggdgeG6VZ4H4IhdiIGIOB8YIiGiHZZgqYpGF4KYHiKCI+CAU5jCiTQ2g0YhEFyax4gABAEIC";
		com_Appearance.Add(1,COMVariant::createFromStr(var_s));
		var_s1 = "gBFLBCJwBAEHhEJAAEhABU0IQAAYAQGKQYhiAKBQAGaAoDDcMA4QwAAyjAKMEwsACEIrjKCRShyCYZRhGcTAJBMIhiGQYAChEZxVhEMgzDjIAxSJAcQRFESaAABGCQGh";
		var_s1 = var_s1 + "+N4/S4NIi0CIsZQjCaiZ7pKA5bgMCo+UrNMixZQVCSOGChYRpCaZWpGGodQRUFbVHAlKypJKCKrEWSrDhuYAAW7XM7yBS1TzVNSuLZtaLqSroAJ1WTWMB0Ra8NzZEKfa";
		var_s1 = var_s1 + "ZACj4arKejrRDCMAggI=";
		com_Appearance.Add(2,COMVariant::createFromStr(var_s1));
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
			com_Bar.Color(0x1000000);
		var_Bar1 = COM::createFromObject(com_Chart.Bars()).Item("Summary"); com_Bar1 = var_Bar1;
			com_Bar1.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
			com_Bar1.Color(0x2000000);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hSummaryJ = com_Items.AddItem("Summary A");
		com_Items.AddBar(hSummaryJ,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"J");
		hTaskJ = com_Items.InsertItem(hSummaryJ,,"Task A.1");
		com_Items.AddBar(hTaskJ,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"J1");
		hTaskJ = com_Items.InsertItem(hSummaryJ,,"Task A.2");
		com_Items.AddBar(hTaskJ,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"J2");
		com_Items.DefineSummaryBars(hSummaryJ,"J",-1,"<*>");
		hSummaryK = com_Items.AddItem("Summary B");
		com_Items.AddBar(hSummaryK,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"K");
		hTaskK = com_Items.InsertItem(hSummaryK,,"Task B.1");
		com_Items.AddBar(hTaskK,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"K1");
		hTaskK = com_Items.InsertItem(hSummaryK,,"Task B.2");
		com_Items.AddBar(hTaskK,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"K2");
		com_Items.DefineSummaryBars(hSummaryK,"K",-1,"<*>");
		com_Items.ItemBar(0,"<K*>",33/*exBarColor*/,COMVariant::createFromInt(255));
		com_Items.ExpandItem(0,true);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
1890
How can I include the child items, when a filter is applied

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ColumnAutoResize(true);
	exg2antt1.ContinueColumnScroll(0);
	exg2antt1.MarkSearchColumn(false);
	exg2antt1.SearchColumnIndex(1);
	exg2antt1.Indent(16);
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exg2antt1.FilterBarPromptVisible(true);
	exg2antt1.FilterBarPromptPattern("Nancy");
	exg2antt1.FilterInclude(1/*exItemsWithChilds*/);
	exg2antt1.Chart().LevelCount(2);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.InsertItem(h0,,"Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		h0 = com_Items.InsertItem(h0,,"Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.InsertItem(h0,,"Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		com_Items.ExpandItem(0,true);
	exg2antt1.ApplyFilter();
	exg2antt1.EndUpdate();
}
1889
Is it possible to change the date format shown when you scroll the horizontal bar on the chart

public void init()
{
	;

	super();

	exg2antt1.Chart().ToolTip("<b>Date</b><br><%loc_ldate%>");
}
1888
How do I change the drop down filter icon/button (white)

public void init()
{
	COM com_Appearance,com_Chart,com_Column;
	anytype var_Appearance,var_Chart,var_Column;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Appearance = exg2antt1.VisualAppearance(); com_Appearance = var_Appearance;
		var_s = "gBFLBCJwBAEHhEJAAEhABX8GACAADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjBI8ExXFqNACkGKwYgmNYiTLAcgANJ";
		var_s = var_s + "0WBaGIZJ4gOT5fDKMoEDRRYADFCscwxJybQAqGQKKb+VgAVY/cTyBIAEQSKA0TDOQ5TSKWB4JPZQRBEbZMNBtBIUJquKaqShdQJCU5FdY3Xblez9P7AMBwLFEC4NQ8YN";
		var_s = var_s + "YuPhjR4dRTIMhvVAsUArFh8Zg9GZZFjmDIDT4ydBLTQwcyVIKnP5qOa6XbmPoCQDYKxZHYxPzVDa3axuL76dqCAT7XrXNy1TbNRrzQKfcJqfCbdw2YaDZLOOT3fjuI4h";
		var_s = var_s + "hKaRzFAHJ+jYQ4xHuY4gHuGIXGeExqC8Tp6C+PoEm+G5ImycRgh0XwvDGa5rgOeoejyXwnFeQp2mkf5ClgBB9gCWIYAwfYAEKV58mkdwOggNArgOXY2EWLoDkKOA0mgb";
		var_s = var_s + "hOGgZApgaSBIHWSYHSmbApgYThmESZYJkIeIkgeCpfliLIHgpMIcmUYYYmODAlg2SI4mWfRfGOEguDcCRjFYAJihCQhJBSDoRmONgKEcI4kFCEJhhOVYTmYnAlEAQhWB";
		var_s = var_s + "MJYJGYWoWmWSR2F6F5lnkWAQhUAgpEieRWEuSYkjWGpmkmNhuhuZwJkYcocmaaYkjyEhngnUA6lEFAlAEgI=";
		com_Appearance.Add(2,COMVariant::createFromStr(var_s));
		com_Appearance.Add(1,"CP:2 -4 -4 2 4");
	exg2antt1.Background(0/*exHeaderFilterBarButton*/,0x1000000);
	exg2antt1.Background(32/*exCursorHoverColumn*/,exg2antt1.BackColor());
	exg2antt1.HeaderAppearance(0/*None2*/);
	exg2antt1.BackColorHeader(WinApi::RGB2int(255,255,255));
	exg2antt1.HeaderVisible(1/*exHeaderVisibleExtendLevels*/);
	exg2antt1.HeaderHeight(24);
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Filter")); com_Column = var_Column;
		com_Column.DisplayFilterButton(true);
		com_Column.AllowSort(false);
		com_Column.AllowDragging(false);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,196);
		com_Chart.LevelCount(2);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,196);
}
*/
1887
How do I prevent changing the cell's state ( check-box state )

// CellStateChanging event - Fired before cell's state is about to be changed.
void onEvent_CellStateChanging(int   _Item,int   _ColIndex,COMVariant /*long*/   _NewState)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		_NewState = com_Items.CellState(_Item,_ColIndex);
}

public void init()
{
	COM com_Column,com_Column1,com_Items;
	anytype var_Column,var_Column1,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("P1")); com_Column = var_Column;
		com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		com_Column.PartialCheck(true);
	var_Column1 = COM::createFromVariant(exg2antt1.Columns().Add("P2")); com_Column1 = var_Column1;
		com_Column1.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		com_Column1.PartialCheck(true);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
	exg2antt1.EndUpdate();
}
1886
How do I change the color of the columns's header to cover all levels

public void init()
{
	COM com_Chart,com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Chart,var_Column,var_Column1,var_Columns,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DrawGridLines(-1/*exAllLines*/);
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColorHeader());
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.DefaultItemHeight(36);
	exg2antt1.TreeColumnIndex(-1);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("C1")); com_Column = var_Column;
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
			com_Column.Width(24);
			com_Column.AllowSizing(false);
			com_Column.Def(48/*exCellPaddingLeft*/,COMVariant::createFromInt(3));
		var_Column1 = COM::createFromVariant(com_Columns.Add("C2")); com_Column1 = var_Column1;
			com_Column1.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
			com_Column1.Def(48/*exCellPaddingLeft*/,COMVariant::createFromInt(2));
		com_Columns.Add("Column1");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.BackColorLevelHeader(exg2antt1.BackColorHeader());
		com_Chart.LevelCount(2);
		com_Chart.DrawGridLines(-1/*exAllLines*/);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("6/22/2014",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,256);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Cell 1.2");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"Cell 1.3");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("6/23/2014",213)),COMVariant::createFromDate(str2Date("6/25/2014",213)));
		h = com_Items.AddItem("");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Cell 2.2");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"Cell 2.3");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("6/26/2014",213)),COMVariant::createFromDate(str2Date("6/28/2014",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,256);
}
*/
1885
Is it possible to extend the columns's header to fill all levels

public void init()
{
	COM com_Chart,com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Chart,var_Column,var_Column1,var_Columns,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DrawGridLines(-1/*exAllLines*/);
	exg2antt1.HeaderVisible(1/*exHeaderVisibleExtendLevels*/);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.DefaultItemHeight(36);
	exg2antt1.TreeColumnIndex(-1);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("C1")); com_Column = var_Column;
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
			com_Column.Width(24);
			com_Column.AllowSizing(false);
			com_Column.Def(48/*exCellPaddingLeft*/,COMVariant::createFromInt(3));
		var_Column1 = COM::createFromVariant(com_Columns.Add("C2")); com_Column1 = var_Column1;
			com_Column1.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
			com_Column1.Def(48/*exCellPaddingLeft*/,COMVariant::createFromInt(2));
		com_Columns.Add("Column1");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.BackColorLevelHeader(exg2antt1.BackColorHeader());
		com_Chart.LevelCount(2);
		com_Chart.DrawGridLines(-1/*exAllLines*/);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("6/22/2014",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,256);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Cell 1.2");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"Cell 1.3");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("6/23/2014",213)),COMVariant::createFromDate(str2Date("6/25/2014",213)));
		h = com_Items.AddItem("");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Cell 2.2");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"Cell 2.3");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("6/26/2014",213)),COMVariant::createFromDate(str2Date("6/28/2014",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,256);
}
*/
1884
How do I change the color of the columns's header to cover all levels (sample CRD)

public void init()
{
	COM com_Chart,com_Column,com_Column1,com_Column2,com_Columns,com_Items;
	anytype var_Chart,var_Column,var_Column1,var_Column2,var_Columns,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DrawGridLines(-1/*exAllLines*/);
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColorHeader());
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.DefaultItemHeight(36);
	exg2antt1.TreeColumnIndex(-1);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("C1")); com_Column = var_Column;
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
			com_Column.Width(24);
			com_Column.AllowSizing(false);
			com_Column.Def(48/*exCellPaddingLeft*/,COMVariant::createFromInt(3));
		var_Column1 = COM::createFromVariant(com_Columns.Add("C2")); com_Column1 = var_Column1;
			com_Column1.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
			com_Column1.Def(48/*exCellPaddingLeft*/,COMVariant::createFromInt(2));
		COM::createFromVariant(com_Columns.Add("Column1")).Visible(false);
		COM::createFromVariant(com_Columns.Add("Column2")).Visible(false);
		COM::createFromVariant(com_Columns.Add("Column3")).Visible(false);
		var_Column2 = COM::createFromVariant(com_Columns.Add("FormatLevel")); com_Column2 = var_Column2;
			com_Column2.FormatLevel("18;\"Info\"[a=17]/(2/3,4)");
			com_Column2.Def(32/*exCellFormatLevel*/,"2/3,4");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.DrawGridLines(-1/*exAllLines*/);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("6/22/2014",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,256);
		com_Chart.BackColorLevelHeader(exg2antt1.BackColorHeader());
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Cell 1.2");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"Cell 1.3");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("6/23/2014",213)),COMVariant::createFromDate(str2Date("6/25/2014",213)));
		h = com_Items.AddItem("");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Cell 2.2");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"Cell 2.3");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("6/26/2014",213)),COMVariant::createFromDate(str2Date("6/28/2014",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,256);
}
*/
1883
Is it possible to extend the columns's header to fill all levels (sample CRD)

public void init()
{
	COM com_Chart,com_Column,com_Column1,com_Column2,com_Columns,com_Items;
	anytype var_Chart,var_Column,var_Column1,var_Column2,var_Columns,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DrawGridLines(-1/*exAllLines*/);
	exg2antt1.HeaderVisible(1/*exHeaderVisibleExtendLevels*/);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.DefaultItemHeight(36);
	exg2antt1.TreeColumnIndex(-1);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("C1")); com_Column = var_Column;
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
			com_Column.Width(24);
			com_Column.AllowSizing(false);
			com_Column.Def(48/*exCellPaddingLeft*/,COMVariant::createFromInt(3));
		var_Column1 = COM::createFromVariant(com_Columns.Add("C2")); com_Column1 = var_Column1;
			com_Column1.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
			com_Column1.Def(48/*exCellPaddingLeft*/,COMVariant::createFromInt(2));
		COM::createFromVariant(com_Columns.Add("Column1")).Visible(false);
		COM::createFromVariant(com_Columns.Add("Column2")).Visible(false);
		COM::createFromVariant(com_Columns.Add("Column3")).Visible(false);
		var_Column2 = COM::createFromVariant(com_Columns.Add("FormatLevel")); com_Column2 = var_Column2;
			com_Column2.FormatLevel("18;\"Info\"[a=17]/(2/3,4)");
			com_Column2.Def(32/*exCellFormatLevel*/,"2/3,4");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.DrawGridLines(-1/*exAllLines*/);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("6/22/2014",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,256);
		com_Chart.BackColorLevelHeader(exg2antt1.BackColorHeader());
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Cell 1.2");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"Cell 1.3");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("6/23/2014",213)),COMVariant::createFromDate(str2Date("6/25/2014",213)));
		h = com_Items.AddItem("");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Cell 2.2");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"Cell 2.3");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("6/26/2014",213)),COMVariant::createFromDate(str2Date("6/28/2014",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,256);
}
*/
1882
How do I get sorted the column as string, numeric, date, date and time. Also how can it be applied to drop down filter panel

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Column3,com_Column4,com_Column5,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Column3,var_Column4,var_Column5,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	/*should be called during the form's activate method*/ exg2antt1.Chart().PaneWidth(true,0);
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Date")); com_Column = var_Column;
		com_Column.SortType(2/*SortDate*/);
		com_Column.DisplayFilterButton(true);
		com_Column.DisplayFilterPattern(false);
		com_Column.DisplayFilterDate(true);
		com_Column.FilterList(1296/*exShowFocusItem | exShowCheckBox | exSortItemsDesc*/);
	var_Column1 = COM::createFromVariant(exg2antt1.Columns().Add("DateTime")); com_Column1 = var_Column1;
		com_Column1.SortType(3/*SortDateTime*/);
		com_Column1.DisplayFilterButton(true);
		com_Column1.DisplayFilterPattern(false);
		com_Column1.FilterList(1296/*exShowFocusItem | exShowCheckBox | exSortItemsDesc*/);
	var_Column2 = COM::createFromVariant(exg2antt1.Columns().Add("Time")); com_Column2 = var_Column2;
		com_Column2.SortType(4/*SortTime*/);
		com_Column2.DisplayFilterButton(true);
		com_Column2.DisplayFilterPattern(false);
		com_Column2.FilterList(1296/*exShowFocusItem | exShowCheckBox | exSortItemsDesc*/);
		com_Column2.FormatColumn("time(value)");
	var_Column3 = COM::createFromVariant(exg2antt1.Columns().Add("Numeric")); com_Column3 = var_Column3;
		com_Column3.SortType(1/*SortNumeric*/);
		com_Column3.DisplayFilterButton(true);
		com_Column3.FilterList(1296/*exShowFocusItem | exShowCheckBox | exSortItemsDesc*/);
	var_Column4 = COM::createFromVariant(exg2antt1.Columns().Add("String")); com_Column4 = var_Column4;
		com_Column4.DisplayFilterButton(true);
		com_Column4.FilterList(1296/*exShowFocusItem | exShowCheckBox | exSortItemsDesc*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem(COMVariant::createFromDate(str2Date("1/27/2010",213)));
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromUtcDateTime(str2Datetime("1/27/2010 10:00:00",213)));
		com_Items.CellValue(h,COMVariant::createFromInt(2),com_Items.CellValue(h,COMVariant::createFromInt(1)));
		com_Items.CellValue(h,COMVariant::createFromInt(3),COMVariant::createFromInt(1));
		com_Items.CellValue(h,COMVariant::createFromInt(4),com_Items.CellValue(h,COMVariant::createFromInt(3)));
		h = com_Items.AddItem(COMVariant::createFromDate(str2Date("1/27/2011",213)));
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromUtcDateTime(str2Datetime("1/27/2011 9:00:00",213)));
		com_Items.CellValue(h,COMVariant::createFromInt(2),com_Items.CellValue(h,COMVariant::createFromInt(1)));
		com_Items.CellValue(h,COMVariant::createFromInt(3),COMVariant::createFromInt(11));
		com_Items.CellValue(h,COMVariant::createFromInt(4),com_Items.CellValue(h,COMVariant::createFromInt(3)));
		h = com_Items.AddItem(COMVariant::createFromDate(str2Date("11/2/2010",213)));
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromUtcDateTime(str2Datetime("11/2/2010 9:00:00",213)));
		com_Items.CellValue(h,COMVariant::createFromInt(2),com_Items.CellValue(h,COMVariant::createFromInt(1)));
		com_Items.CellValue(h,COMVariant::createFromInt(3),COMVariant::createFromInt(2));
		com_Items.CellValue(h,COMVariant::createFromInt(4),com_Items.CellValue(h,COMVariant::createFromInt(3)));
	var_Column5 = COM::createFromObject(exg2antt1.Columns()).Item("DateTime"); com_Column5 = var_Column5;
	com_Column5.DisplayFilterDate(false);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(true,0);
}
*/
1881
Is there a way to set the time zone per item

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Task");
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Task A");
		com_Items.AddBar(h1,"",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/18/2001",213)),"TZ1","Time Zone / Item");
		com_Items.ItemBar(h1,"TZ1",29/*exBarSelectable*/,COMVariant::createFromBoolean(false));
		com_Items.ItemBar(h1,"TZ1",7/*exBarBackColor*/,COMVariant::createFromInt(255));
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/20/2001",213)),COMVariant::createFromDate(str2Date("1/29/2001",213)),"Z1");
		h1 = com_Items.AddItem("Task B");
		com_Items.AddBar(h1,"",COMVariant::createFromDate(str2Date("1/6/2001",213)),COMVariant::createFromDate(str2Date("1/24/2001",213)),"TZ2","Time Zone / Item");
		com_Items.ItemBar(h1,"TZ2",29/*exBarSelectable*/,COMVariant::createFromBoolean(false));
		com_Items.ItemBar(h1,"TZ2",7/*exBarBackColor*/,COMVariant::createFromInt(65535));
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/12/2001",213)),"Z1");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1880
Is there a way to turn arrow-key-navigation between the items on and off
// KeyDown event - Occurs when the user presses a key while an object has the focus.
void onEvent_KeyDown(COMVariant /*short*/   _KeyCode,int   _Shift)
{
	;
	_KeyCode = 0;
}

public void init()
{
	COM com_Bar,com_Chart,com_Column,com_Editor,com_Items;
	anytype var_Bar,var_Chart,var_Column,var_Editor,var_Items;
	int h1;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Tasks");
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Effort")); com_Column = var_Column;
		com_Column.Def(18/*exCellValueToItemBarProperty*/,COMVariant::createFromInt(21));
		var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
		com_Editor.EditType(4/*SpinType*/);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.NonworkingDays(0);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,96);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("6/20/2005",213)));
		com_Chart.HistogramVisible(true);
		com_Chart.HistogramHeight(128);
		com_Chart.HistogramView(112/*exHistogramAllItems*/);
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.HistogramPattern(com_Bar.Pattern());
			com_Bar.HistogramType(0/*exHistOverload*/);
			com_Bar.HistogramCriticalValue(3);
			com_Bar.ShowHistogramValues("value>3?255:1");
			com_Bar.HistogramItems(-11);
			com_Bar.HistogramGridLinesColor(WinApi::RGB2int(192,192,192));
			com_Bar.HistogramRulerLinesColor(WinApi::RGB2int(0,0,1));
			com_Bar.FormatHistogramValues("value format `2`");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AllowCellValueToItemBar(true);
		h1 = com_Items.AddItem("Task 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("6/21/2005",213)),COMVariant::createFromDate(str2Date("6/23/2005",213)));
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromReal(6.79));
		h1 = com_Items.AddItem("Task 2");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("6/24/2005",213)),COMVariant::createFromDate(str2Date("6/26/2005",213)));
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromReal(3.19));
		h1 = com_Items.AddItem("Task 3");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("6/27/2005",213)),COMVariant::createFromDate(str2Date("6/29/2005",213)));
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		h1 = com_Items.AddItem("Task 4");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("6/30/2005",213)),COMVariant::createFromDate(str2Date("7/2/2005",213)));
		com_Items.CellValue(h1,COMVariant::createFromInt(1),COMVariant::createFromInt(1));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,96);
}
*/
1879
I am using Layout property to sort multiple columns at once. The problem is that all items get expanded. How do I prevent that

public void init()
{
	COM com_Column,com_Column1,com_Items;
	anytype var_Column,var_Column1,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("P1")); com_Column = var_Column;
		com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		com_Column.PartialCheck(true);
	var_Column1 = COM::createFromVariant(exg2antt1.Columns().Add("P2")); com_Column1 = var_Column1;
		com_Column1.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		com_Column1.PartialCheck(true);
		com_Column1.FormatColumn("1 index ``");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.InsertItem(h,,"Child A");
		com_Items.InsertItem(h,,"Child B");
		com_Items.InsertItem(h,,"Child A");
		com_Items.InsertItem(h,,"Child B");
		com_Items.AddItem("Root");
		com_Items.AddItem("Root");
	exg2antt1.SingleSort(false);
	exg2antt1.Layout("multiplesort=\"C0:1 C1:2\";collapse=\"\"");
	exg2antt1.EndUpdate();
}
1878
How can I decode the Layout property

public void init()
{
	COM com_Column,com_Columns,com_Items,com_Print;
	anytype var_Column,var_Columns,var_Items,var_Print;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("C1");
		COM::createFromVariant(com_Columns.Add("C2")).Position(1);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem("SubItem 1.1"),COMVariant::createFromInt(1),"SubItem 1.2");
		com_Items.CellValue(com_Items.AddItem("SubItem 2.1"),COMVariant::createFromInt(1),"SubItem 2.2");
	var_Column = COM::createFromObject(exg2antt1.Columns()).Item("C2"); com_Column = var_Column;
	com_Column.SortOrder(2/*SortDescending*/);
	exg2antt1.EndUpdate();
	print( "Encoded:" );
	print( exg2antt1.Layout() );
	// Add 'exprint.dll(ExPrint.dll)' reference to your project.
	// Add 'ExPrint 1.0 Control Library(ExPrint.dll)' reference to your project.
	var_Print = COM::createFromObject(new EXPRINTLib.exprint()); com_Print = var_Print;
		print( "Decoded: " );
		print( com_Print.Decode64TextW(exg2antt1.Layout()) );
}
1877
Is it possible to define a bar inside a bar (method 2)

public void init()
{
	COM com_Bar,com_Chart,com_Items,com_Note,com_Notes;
	anytype var_Bar,var_Chart,var_Items,var_Note,var_Notes;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ScrollBySingleLine(true);
	exg2antt1.Columns().Add("Task");
	exg2antt1.DrawGridLines(1/*exHLines*/);
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.DrawGridLines(1/*exHLines*/);
		com_Chart.AllowCreateBar(1/*exCreateBarAuto*/);
		com_Chart.AllowLinkBars(false);
		com_Chart.ResizeUnitScale(65536/*exHour*/);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
		com_Bar.OverlaidType(515/*exOverlaidBarsStackAutoArrange | exOverlaidBarsStack*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Tasks");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/7/2001",213)),"A1");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"A2");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/9/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"A3");
	var_Notes = exg2antt1.Chart().Notes(); com_Notes = var_Notes;
		var_Note = com_Notes.Add("N1",exg2antt1.Items().FirstVisibleItem(),"A1",""); com_Note = var_Note;
			com_Note.PartText(0/*exNoteStart*/," ");
			com_Note.PartFixedWidth(0/*exNoteStart*/,18);
			com_Note.PartFixedHeight(0/*exNoteStart*/,11);
			com_Note.PartCanMove(0/*exNoteStart*/,true);
			com_Note.PartBackColor(0/*exNoteStart*/,WinApi::RGB2int(0,255,0));
			com_Note.PartVisible(1/*exNoteEnd*/,false);
			com_Note.ShowLink(0/*exNoteLinkHidden*/);
			com_Note.PartVOffset(0/*exNoteStart*/,4);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1876
Is it possible to define a bar inside a bar (method 1)

public void init()
{
	COM com_Bar,com_Bar1,com_Bar2,com_Bars,com_Chart,com_Items;
	anytype var_Bar,var_Bar1,var_Bar2,var_Bars,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ScrollBySingleLine(true);
	exg2antt1.Columns().Add("Task");
	exg2antt1.DrawGridLines(1/*exHLines*/);
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.DrawGridLines(1/*exHLines*/);
		com_Chart.AllowCreateBar(1/*exCreateBarAuto*/);
		com_Chart.AllowLinkBars(false);
		com_Chart.ResizeUnitScale(65536/*exHour*/);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.OverlaidType(515/*exOverlaidBarsStackAutoArrange | exOverlaidBarsStack*/);
			com_Bar.OverlaidGroup("Task,TaskB");
		var_Bars = COM::createFromObject(com_Chart.Bars()); com_Bars = var_Bars;
		var_Bar1 = COM::createFromObject(com_Bars).Add("Aka"); com_Bar1 = var_Bar1;
			com_Bar1.Color(WinApi::RGB2int(0,255,0));
			com_Bar1.Pattern(1/*exPatternSolid*/);
		var_Bars = COM::createFromObject(com_Chart.Bars()); com_Bars = var_Bars;
		var_Bar2 = COM::createFromObject(com_Bars).Add("Task%Aka"); com_Bar2 = var_Bar2;
			com_Bar2.Shortcut("TaskB");
			com_Bar2.OverlaidType(515/*exOverlaidBarsStackAutoArrange | exOverlaidBarsStack*/);
			com_Bar2.OverlaidGroup("Task,TaskB");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Tasks");
		com_Items.AddBar(h,"TaskB",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/7/2001",213)),"A1");
		com_Items.ItemBar(h,"A1",12/*exBarPercent*/,COMVariant::createFromReal(0.25));
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"A2");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/9/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"A3");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1875
How do I show the bar with a solid color, no border (method 1)

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ScrollBySingleLine(true);
	exg2antt1.Columns().Add("Task");
	exg2antt1.DrawGridLines(1/*exHLines*/);
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.DrawGridLines(1/*exHLines*/);
		com_Chart.AllowCreateBar(1/*exCreateBarAuto*/);
		com_Chart.AllowLinkBars(false);
		com_Chart.ResizeUnitScale(65536/*exHour*/);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.Color(WinApi::RGB2int(255,0,0));
			com_Bar.Pattern(1/*exPatternSolid*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Task");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1874
How do I show the bar with a solid color, no border (method 2)

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ScrollBySingleLine(true);
	exg2antt1.Columns().Add("Task");
	exg2antt1.DrawGridLines(1/*exHLines*/);
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.DrawGridLines(1/*exHLines*/);
		com_Chart.AllowCreateBar(1/*exCreateBarAuto*/);
		com_Chart.AllowLinkBars(false);
		com_Chart.ResizeUnitScale(65536/*exHour*/);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.Color(WinApi::RGB2int(255,0,0));
			com_Bar.StartColor(com_Bar.Color());
			com_Bar.EndColor(com_Bar.Color());
			com_Bar.Pattern(32/*exPatternBox*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Task");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1873
How do I show the bar with a solid color, no border (method 3)

public void init()
{
	COM com_Appearance,com_Bar,com_Chart,com_Items;
	anytype var_Appearance,var_Bar,var_Chart,var_Items;
	int h;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ScrollBySingleLine(true);
	exg2antt1.Columns().Add("Task");
	exg2antt1.DrawGridLines(1/*exHLines*/);
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.DrawGridLines(1/*exHLines*/);
		com_Chart.AllowCreateBar(1/*exCreateBarAuto*/);
		com_Chart.AllowLinkBars(false);
		com_Chart.ResizeUnitScale(65536/*exHour*/);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	var_Appearance = exg2antt1.VisualAppearance(); com_Appearance = var_Appearance;
		com_Appearance.RenderType(-1);
		var_s = "gBFLBCJwBAEHhEJAAEhABJkIQAAYAQGKQYhiAKBQAGaAoDDcMA4QwAAyDQKkEwsACEIrjKCRShyCYZRhGcTSBCIZBqEqSZLiEZRQiiCYsS5AcgPfKgAAFESNY5gSL5Yj";
		var_s = var_s + "2IjrRDCMAggI";
		com_Appearance.Add(1,COMVariant::createFromStr(var_s));
	var_Bar = COM::createFromObject(exg2antt1.Chart().Bars()).Item("Task"); com_Bar = var_Bar;
		com_Bar.Color(0x10000ff);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Task");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1872
How do I find the cell's type, or what the cell holds

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DrawGridLines(-2/*exRowLines*/);
	/*should be called during the form's activate method*/ exg2antt1.Chart().PaneWidth(true,0);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Value")).Width(24);
		COM::createFromVariant(com_Columns.Add("Type")).FormatColumn("type(%0)");
		var_s = "(0 := type(%0)) array (`empty`, `null`, `short`, `long`, `float`, `double`, `currency`, `date`, `string`, `object`, `error`, `bo";
		var_s = var_s + "olean`, `variant`, `any`, `reserved`, `decimal`, `char`, `byte`, `unsigned short`, `unsigned long`, `long on 64 bits`)";
		COM::createFromVariant(com_Columns.Add("TypeAsString")).FormatColumn(var_s);
		COM::createFromVariant(com_Columns.Add("Length")).FormatColumn("len(%0)");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem();
		com_Items.AddItem("");
		com_Items.CellValue(.AddItem(),COMVariant::createFromInt(0),COM::createFromVariant(exg2antt1));
		com_Items.CellValue(com_Items.AddItem(),COMVariant::createFromInt(0),COMVariant::createFromBoolean(true));
		com_Items.CellValue(com_Items.AddItem(),COMVariant::createFromInt(0),COMVariant::createFromInt(-1));
		com_Items.CellValue(com_Items.AddItem(),COMVariant::createFromInt(0),COMVariant::createFromInt(-1));
		com_Items.CellValue(com_Items.AddItem(),COMVariant::createFromInt(0),COMVariant::createFromDate(str2Date("1/1/2001",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(true,0);
}
*/
1871
Is it possible to allow changing the bar's parent while bar's start/end margins should stay unchanged
// BarParentChange event - Occurs just before moving a bar from current item to another item.
void onEvent_BarParentChange(int   _Item,COMVariant   _Key,int   _NewItem,COMVariant /*bool*/   _Cancel)
{
	;
	exg2antt1.Items().SelectItem(_NewItem,true);
	print( "BarParentChange from " );
	print( exg2antt1.Items().CellCaption(_Item,COMVariant::createFromInt(0)) );
	print( " to " );
	print( exg2antt1.Items().CellCaption(_NewItem,COMVariant::createFromInt(0)) );
}

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	COM::createFromVariant(exg2antt1.Columns().Add("Members")).Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	exg2antt1.SelBackMode(1/*exTransparent*/);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.SelBackColor(exg2antt1.SelBackColor());
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("9/20/2006",213)));
		com_Chart.AllowLinkBars(false);
		com_Chart.AllowCreateBar(0/*exNoCreateBar*/);
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,96);
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
			com_Bar.Def(10/*exBarCanResize*/,COMVariant::createFromBoolean(false));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("Member <b>1</b>");
		h = com_Items.AddItem("Member <b>2</b>");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("9/21/2006",213)),COMVariant::createFromDate(str2Date("9/23/2006",213)),"T102","Task <b>102</b>");
		com_Items.ItemBar(h,"T102",11/*exBarCanMove*/,COMVariant::createFromBoolean(false));
		com_Items.ItemBar(h,"T102",28/*exBarCanMoveToAnother*/,COMVariant::createFromBoolean(true));
		com_Items.AddItem("Member <b>3</b>");
		com_Items.AddItem("Member <b>4</b>");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,96);
}
*/
1870
Is it possible to (un)highlight the day/night shifts

// Click event - Occurs when the user presses and then releases the left mouse button over the tree control.
void onEvent_Click()
{
	COM com_Chart;
	anytype var_Chart;
	;
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.ShowNonworkingDates(false);
		com_Chart.ShowNonworkingHours(false);
		com_Chart.BackColor(WinApi::RGB2int(255,255,255));
	exg2antt1.Refresh();
}

public void init()
{
	COM com_Chart;
	anytype var_Chart;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		com_Chart.LevelCount(2);
		com_Chart.UnitScale(4096/*exDay*/);
		com_Chart.UnitWidth(64);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,0);
		com_Chart.NonworkingHours(15728895);
		com_Chart.NonworkingHoursPattern(1/*exPatternSolid*/);
		com_Chart.NonworkingDaysPattern(com_Chart.NonworkingHoursPattern());
		com_Chart.NonworkingHoursColor(WinApi::RGB2int(240,240,240));
		com_Chart.NonworkingDaysColor(WinApi::RGB2int(212,212,212));
		com_Chart.BackColor(WinApi::RGB2int(250,250,250));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,0);
}
*/
1869
How can I add a vertical line at specified date-time

public void init()
{
	COM com_Chart;
	anytype var_Chart;
	;

	super();

	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,18);
		com_Chart.LevelCount(2);
		com_Chart.UnitWidth(32);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2010",213)));
		com_Chart.MarkTimeZone("M1",COMVariant::createFromDate(str2Date("1/5/2010",213)),COMVariant::createFromDate(str2Date("1/5/2010",213)),COMVariant::createFromInt(16711680),"50:5;3");
		com_Chart.MarkTimeZone("M2",COMVariant::createFromDate(str2Date("1/6/2010",213)),COMVariant::createFromDate(str2Date("1/6/2010",213)),COMVariant::createFromInt(16711680),":5");
		com_Chart.MarkTimeZone("M3",COMVariant::createFromUtcDateTime(str2Datetime("1/7/2010 10:00:00",213)),COMVariant::createFromUtcDateTime(str2Datetime("1/7/2010 10:00:00",213)),COMVariant::createFromInt(255),"50:3;;zone");
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,18);
}
*/
1868
How do I clear all date-time zones
// Click event - Occurs when the user presses and then releases the left mouse button over the tree control.
void onEvent_Click()
{
	;
	exg2antt1.Chart().RemoveTimeZone("<*>");
}

// RClick event - Fired when right mouse button is clicked
void onEvent_RClick()
{
	;
	exg2antt1.Chart().RemoveTimeZone("<Z*>");
}

public void init()
{
	COM com_Chart;
	anytype var_Chart;
	;

	super();

	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,18);
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2010",213)));
		com_Chart.MarkTimeZone("Z1",COMVariant::createFromDate(str2Date("1/4/2010",213)),COMVariant::createFromDate(str2Date("1/5/2010",213)),COMVariant::createFromInt(255));
		com_Chart.MarkTimeZone("Z2",COMVariant::createFromDate(str2Date("1/11/2010",213)),COMVariant::createFromDate(str2Date("1/12/2010",213)),COMVariant::createFromInt(65280));
		com_Chart.MarkTimeZone("M1",COMVariant::createFromDate(str2Date("1/7/2010",213)),COMVariant::createFromDate(str2Date("1/8/2010",213)),COMVariant::createFromInt(16711680),"50:5;3");
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,18);
}
*/
1867
How do I place a comment above/bellow the bar (sample 4)

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DefaultItemHeight(26);
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.Def(5/*exBarVAlignCaption*/,COMVariant::createFromInt(18));
			com_Bar.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(0));
			com_Bar.Def(44/*exBarExtraCaption*/," ");
			com_Bar.Def(45/*exBarExtraCaptionHAlign*/,COMVariant::createFromInt(0));
			com_Bar.Def(46/*exBarExtraCaptionVAlign*/,COMVariant::createFromInt(16));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Task");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)),"K1","<font ;6>user comment");
		com_Items.ItemBar(h,"K1",44/*exBarExtraCaption*/,"<font ;6>user comment");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/9/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"K2","<font ;6>user comment");
		com_Items.ItemBar(h,"K2",44/*exBarExtraCaption*/,"<font ;6>user comment");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
1866
How do I place a comment above/bellow the bar (sample 3)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DefaultItemHeight(26);
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Task");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)),"K1","<font ;6>user comment");
		com_Items.ItemBar(h,"K1",5/*exBarVAlignCaption*/,COMVariant::createFromInt(18));
		com_Items.ItemBar(h,"K1",4/*exBarHAlignCaption*/,COMVariant::createFromInt(0));
		com_Items.ItemBar(h,"K1",44/*exBarExtraCaption*/,"<font ;6>user comment");
		com_Items.ItemBar(h,"K1",45/*exBarExtraCaptionHAlign*/,COMVariant::createFromInt(0));
		com_Items.ItemBar(h,"K1",46/*exBarExtraCaptionVAlign*/,COMVariant::createFromInt(16));
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/9/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"K2","<font ;6>user comment");
		com_Items.ItemBar(h,"K2",44/*exBarExtraCaption*/,"<font ;6>user comment");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
1865
How do I place a comment under the bar (sample 2)

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DefaultItemHeight(26);
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.Def(5/*exBarVAlignCaption*/,COMVariant::createFromInt(18));
			com_Bar.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(0));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Task");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)),"K1","<font ;6>user comment");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/9/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"K2","<font ;6>user comment");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
1864
How do I place a comment under the bar (sample 1)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DefaultItemHeight(26);
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Task");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/6/2001",213)),"K1","<font ;6>user comment");
		com_Items.ItemBar(h,"K1",5/*exBarVAlignCaption*/,COMVariant::createFromInt(18));
		com_Items.ItemBar(h,"K1",4/*exBarHAlignCaption*/,COMVariant::createFromInt(0));
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/9/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"K2","<font ;6>user comment");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
1863
I am using exBarCanMoveToAnother to allow a bar to be moved from one item to another. The question is if it is possible somehow to highlight the current bar can be dropped to (sample 2)

// BarParentChange event - Occurs just before moving a bar from current item to another item.
void onEvent_BarParentChange(int   _Item,COMVariant   _Key,int   _NewItem,COMVariant /*bool*/   _Cancel)
{
	;
	exg2antt1.Items().SelectItem(_NewItem,true);
	_Cancel = exg2antt1.ConditionalFormats().Item("NOTRED").Verify(_NewItem);
}

// ChartEndChanging event - Occurs after the chart has been changed.
void onEvent_ChartEndChanging(int   _Operation)
{
	;
	exg2antt1.SelForeColor(0x8000000e);
	exg2antt1.SelBackColor(0x8000000d);
	exg2antt1.Chart().SelBackColor(exg2antt1.SelBackColor());
	exg2antt1.ConditionalFormats().Clear();
}

// ChartStartChanging event - Occurs when the chart is about to be changed.
void onEvent_ChartStartChanging(int   _Operation)
{
	COM com_Chart,com_ConditionalFormat,com_ConditionalFormat1;
	anytype var_Chart,var_ConditionalFormat,var_ConditionalFormat1;
	;
	exg2antt1.SelForeColor(exg2antt1.ForeColor());
	exg2antt1.SelBackColor(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.SelBackColor(com_Chart.BackColor());
	var_ConditionalFormat = COM::createFromObject(exg2antt1.ConditionalFormats()).Add("%0 contains `Allowed` ","RED"); com_ConditionalFormat = var_ConditionalFormat;
		com_ConditionalFormat.Enabled(false);
	var_ConditionalFormat1 = COM::createFromObject(exg2antt1.ConditionalFormats()).Add("not ( %0 contains `Allowed` )","NOTRED"); com_ConditionalFormat1 = var_ConditionalFormat1;
		com_ConditionalFormat1.BackColor(0x1fefefe);
		com_ConditionalFormat1.ChartBackColor(com_ConditionalFormat1.BackColor());
}

public void init()
{
	COM com_Bar,com_Chart,com_ConditionalFormat,com_ConditionalFormat1,com_Items;
	anytype var_Bar,var_Chart,var_ConditionalFormat,var_ConditionalFormat1,var_Items;
	int h;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_s = "gBFLBCJwBAEHhEJAAEhABZkIQAAYAQGKQYhiAKBQAGaAoDDcMA4QwAAyDQKkEwsACEIrjKCRShyCYZRrGUgRCKQahLEiTIhGUYJHgmK4tRoAUbyDBIGQSCCZYDmKA3fj";
	var_s = var_s + "0AI9P7FcgSABEEigNIxToOU4jFgeCR2TqQRK1BDQbQSFCaZrmMKIXICO40WBQFhTdLlRyBBKzLKtCyaBqWaZrWxZE72ZaFVTdOK6bDvGwoarid56X7beA2PgdZTjQi5c";
	var_s = var_s + "CxG5sLrTBZtYzfET3diOEYPQzHMpzDB7bxbGaXZBlGSZbjeGZBUjQc7yfSNMw/HqKZQ6cQwTAIgI";
	exg2antt1.VisualAppearance().Add(1,COMVariant::createFromStr(var_s));
	COM::createFromVariant(exg2antt1.Columns().Add("Members")).Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.SelBackColor(exg2antt1.SelBackColor());
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("9/20/2006",213)));
		com_Chart.AllowLinkBars(false);
		com_Chart.AllowCreateBar(0/*exNoCreateBar*/);
		com_Chart.AllowSelectObjects(0/*exNoSelectObjects*/);
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,96);
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
		com_Bar.OverlaidType(4611/*exOverlaidBarsIncludeCaption | exOverlaidBarsStackAutoArrange | exOverlaidBarsStack*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Member <b>1</b>");
		h = com_Items.AddItem("Member <b>Allowed</b>");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("9/21/2006",213)),COMVariant::createFromDate(str2Date("9/23/2006",213)),"T102","Task <b>102</b>");
		com_Items.ItemBar(h,"T102",4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
		com_Items.ItemBar(h,"T102",28/*exBarCanMoveToAnother*/,COMVariant::createFromBoolean(true));
		h = com_Items.AddItem("Member <b>Allowed</b>");
		h = com_Items.AddItem("Member <b>4</b>");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,96);
}
*/
1862
I am using exBarCanMoveToAnother to allow a bar to be moved from one item to another. The question is if it is possible somehow to highlight the current bar can be dropped to (sample 1)

// BarParentChange event - Occurs just before moving a bar from current item to another item.
void onEvent_BarParentChange(int   _Item,COMVariant   _Key,int   _NewItem,COMVariant /*bool*/   _Cancel)
{
	;
	exg2antt1.Items().SelectItem(_NewItem,true);
	_Cancel = exg2antt1.ConditionalFormats().Item("NOTRED").Verify(_NewItem);
}

// ChartEndChanging event - Occurs after the chart has been changed.
void onEvent_ChartEndChanging(int   _Operation)
{
	;
	exg2antt1.SelForeColor(0x8000000e);
	exg2antt1.SelBackColor(0x8000000d);
	exg2antt1.Chart().SelBackColor(exg2antt1.SelBackColor());
	exg2antt1.ConditionalFormats().Clear();
}

// ChartStartChanging event - Occurs when the chart is about to be changed.
void onEvent_ChartStartChanging(int   _Operation)
{
	COM com_Chart,com_ConditionalFormat,com_ConditionalFormat1;
	anytype var_Chart,var_ConditionalFormat,var_ConditionalFormat1;
	;
	exg2antt1.SelForeColor(exg2antt1.ForeColor());
	exg2antt1.SelBackColor(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.SelBackColor(com_Chart.BackColor());
	var_ConditionalFormat = COM::createFromObject(exg2antt1.ConditionalFormats()).Add("%0 contains `Allowed` ","RED"); com_ConditionalFormat = var_ConditionalFormat;
		com_ConditionalFormat.BackColor(WinApi::RGB2int(255,128,128));
		com_ConditionalFormat.ChartBackColor(com_ConditionalFormat.BackColor());
	var_ConditionalFormat1 = COM::createFromObject(exg2antt1.ConditionalFormats()).Add("not ( %0 contains `Allowed` )","NOTRED"); com_ConditionalFormat1 = var_ConditionalFormat1;
		com_ConditionalFormat1.Enabled(false);
}

public void init()
{
	COM com_Bar,com_Chart,com_ConditionalFormat,com_ConditionalFormat1,com_Items;
	anytype var_Bar,var_Chart,var_ConditionalFormat,var_ConditionalFormat1,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	COM::createFromVariant(exg2antt1.Columns().Add("Members")).Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.SelBackColor(exg2antt1.SelBackColor());
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("9/20/2006",213)));
		com_Chart.AllowLinkBars(false);
		com_Chart.AllowCreateBar(0/*exNoCreateBar*/);
		com_Chart.AllowSelectObjects(0/*exNoSelectObjects*/);
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,96);
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
		com_Bar.OverlaidType(4611/*exOverlaidBarsIncludeCaption | exOverlaidBarsStackAutoArrange | exOverlaidBarsStack*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Member <b>1</b>");
		h = com_Items.AddItem("Member <b>Allowed</b>");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("9/21/2006",213)),COMVariant::createFromDate(str2Date("9/23/2006",213)),"T102","Task <b>102</b>");
		com_Items.ItemBar(h,"T102",4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
		com_Items.ItemBar(h,"T102",28/*exBarCanMoveToAnother*/,COMVariant::createFromBoolean(true));
		h = com_Items.AddItem("Member <b>Allowed</b>");
		h = com_Items.AddItem("Member <b>4</b>");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,96);
}
*/
1861
How can I check, if a specified item fits a specified conditional format expression
// AddItem event - Occurs after a new Item has been inserted to Items collection.
void onEvent_AddItem(int   _Item)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(_Item,"Task",com_Items.CellValue(_Item,COMVariant::createFromInt(2)),com_Items.CellValue(_Item,COMVariant::createFromInt(4)));
}

// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	int h;
	;
	h = exg2antt1.ItemFromPoint(-1,-1,c,hit);
	print( exg2antt1.ConditionalFormats().Item("RED").Verify(h) );
}

public void init()
{
	COM com_Chart,com_Column,com_ConditionalFormat,com_ConditionalFormats,com_rs;
	anytype rs,var_Chart,var_Column,var_ConditionalFormat,var_ConditionalFormats;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("8/3/1994",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,256);
		com_Chart.LevelCount(2);
		com_Chart.UnitScale(4096/*exDay*/);
		com_Chart.FirstWeekDay(1/*exMonday*/);
	exg2antt1.Chart().SelBackColor(exg2antt1.SelBackColor());
	exg2antt1.SelBackMode(1/*exTransparent*/);
	exg2antt1.ColumnAutoResize(false);
	exg2antt1.ContinueColumnScroll(false);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exg2antt1.DataSource(rs);
	exg2antt1.Items().AllowCellValueToItemBar(true);
	var_Column = COM::createFromObject(exg2antt1.Columns()).Item(COMVariant::createFromInt(2)); com_Column = var_Column;
	com_Column.Def(18/*exCellValueToItemBarProperty*/,COMVariant::createFromInt(1));
	var_Column = COM::createFromObject(exg2antt1.Columns()).Item(COMVariant::createFromInt(4)); com_Column = var_Column;
	com_Column.Def(18/*exCellValueToItemBarProperty*/,COMVariant::createFromInt(2));
	var_ConditionalFormats = exg2antt1.ConditionalFormats(); com_ConditionalFormats = var_ConditionalFormats;
		var_ConditionalFormat = com_ConditionalFormats.Add("%1 = 5","RED"); com_ConditionalFormat = var_ConditionalFormat;
			com_ConditionalFormat.BackColor(WinApi::RGB2int(255,128,128));
			com_ConditionalFormat.ChartBackColor(com_ConditionalFormat.BackColor());
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,256);
}
*/
1860
Is it possible to apply the conditional format on the items shown on the chart part of the control (sample 3)

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void onEvent_AddItem(int   _Item)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(_Item,"Task",com_Items.CellValue(_Item,COMVariant::createFromInt(2)),com_Items.CellValue(_Item,COMVariant::createFromInt(4)));
}

public void init()
{
	COM com_Chart,com_Column,com_ConditionalFormat,com_ConditionalFormats,com_Items,com_rs;
	anytype rs,var_Chart,var_Column,var_ConditionalFormat,var_ConditionalFormats,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.SelBackMode(1/*exTransparent*/);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.SelBackColor(exg2antt1.SelBackColor());
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("8/3/1994",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,256);
		com_Chart.LevelCount(2);
		com_Chart.UnitScale(4096/*exDay*/);
		com_Chart.FirstWeekDay(1/*exMonday*/);
	exg2antt1.ColumnAutoResize(false);
	exg2antt1.ContinueColumnScroll(false);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exg2antt1.DataSource(rs);
	exg2antt1.Items().AllowCellValueToItemBar(true);
	var_Column = COM::createFromObject(exg2antt1.Columns()).Item(COMVariant::createFromInt(2)); com_Column = var_Column;
	com_Column.Def(18/*exCellValueToItemBarProperty*/,COMVariant::createFromInt(1));
	var_Column = COM::createFromObject(exg2antt1.Columns()).Item(COMVariant::createFromInt(4)); com_Column = var_Column;
	com_Column.Def(18/*exCellValueToItemBarProperty*/,COMVariant::createFromInt(2));
	var_ConditionalFormats = exg2antt1.ConditionalFormats(); com_ConditionalFormats = var_ConditionalFormats;
		var_ConditionalFormat = com_ConditionalFormats.Add("%1 in (3,5)"); com_ConditionalFormat = var_ConditionalFormat;
			com_ConditionalFormat.ApplyToBars("Task");
			com_ConditionalFormat.BarColor(WinApi::RGB2int(255,0,0));
			com_ConditionalFormat.BarOverviewColor(WinApi::RGB2int(255,0,0));
			com_ConditionalFormat.ForeColor(com_ConditionalFormat.BarColor());
			com_ConditionalFormat.Bold(true);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,256);
}
*/
1859
Is it possible to apply the conditional format on the items shown on the chart part of the control (sample 2)

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void onEvent_AddItem(int   _Item)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(_Item,"Task",com_Items.CellValue(_Item,COMVariant::createFromInt(2)),com_Items.CellValue(_Item,COMVariant::createFromInt(4)));
}

public void init()
{
	COM com_Chart,com_Column,com_ConditionalFormat,com_ConditionalFormat1,com_ConditionalFormats,com_Items,com_rs;
	anytype rs,var_Chart,var_Column,var_ConditionalFormat,var_ConditionalFormat1,var_ConditionalFormats,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.SelBackMode(1/*exTransparent*/);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.SelBackColor(exg2antt1.SelBackColor());
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("8/3/1994",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,256);
		com_Chart.LevelCount(2);
		com_Chart.UnitScale(4096/*exDay*/);
		com_Chart.FirstWeekDay(1/*exMonday*/);
	exg2antt1.ColumnAutoResize(false);
	exg2antt1.ContinueColumnScroll(false);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exg2antt1.DataSource(rs);
	exg2antt1.Items().AllowCellValueToItemBar(true);
	var_Column = COM::createFromObject(exg2antt1.Columns()).Item(COMVariant::createFromInt(2)); com_Column = var_Column;
	com_Column.Def(18/*exCellValueToItemBarProperty*/,COMVariant::createFromInt(1));
	var_Column = COM::createFromObject(exg2antt1.Columns()).Item(COMVariant::createFromInt(4)); com_Column = var_Column;
	com_Column.Def(18/*exCellValueToItemBarProperty*/,COMVariant::createFromInt(2));
	var_ConditionalFormats = exg2antt1.ConditionalFormats(); com_ConditionalFormats = var_ConditionalFormats;
		var_ConditionalFormat = com_ConditionalFormats.Add("%1 in (3,5)"); com_ConditionalFormat = var_ConditionalFormat;
			com_ConditionalFormat.ApplyTo(1);
			com_ConditionalFormat.BackColor(WinApi::RGB2int(255,128,128));
		var_ConditionalFormat1 = com_ConditionalFormats.Add("%1 in (3,5)"); com_ConditionalFormat1 = var_ConditionalFormat1;
			com_ConditionalFormat1.ApplyToBars("Task");
			com_ConditionalFormat1.BarColor(WinApi::RGB2int(255,0,0));
			com_ConditionalFormat1.BarOverviewColor(WinApi::RGB2int(255,0,0));
			com_ConditionalFormat1.ChartBackColor(WinApi::RGB2int(255,128,128));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,256);
}
*/
1858
Is it possible to apply the conditional format on the items shown on the chart part of the control (sample 1)

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void onEvent_AddItem(int   _Item)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(_Item,"Task",com_Items.CellValue(_Item,COMVariant::createFromInt(2)),com_Items.CellValue(_Item,COMVariant::createFromInt(4)));
}

public void init()
{
	COM com_Chart,com_Column,com_ConditionalFormat,com_ConditionalFormats,com_Items,com_rs;
	anytype rs,var_Chart,var_Column,var_ConditionalFormat,var_ConditionalFormats,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("8/3/1994",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,256);
		com_Chart.LevelCount(2);
		com_Chart.UnitScale(4096/*exDay*/);
		com_Chart.FirstWeekDay(1/*exMonday*/);
	exg2antt1.SelBackMode(1/*exTransparent*/);
	exg2antt1.BackColorAlternate(WinApi::RGB2int(240,240,240));
	exg2antt1.ColumnAutoResize(false);
	exg2antt1.ContinueColumnScroll(false);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exg2antt1.Chart().SelBackColor(exg2antt1.SelBackColor());
	exg2antt1.DataSource(rs);
	exg2antt1.Items().AllowCellValueToItemBar(true);
	var_Column = COM::createFromObject(exg2antt1.Columns()).Item(COMVariant::createFromInt(2)); com_Column = var_Column;
	com_Column.Def(18/*exCellValueToItemBarProperty*/,COMVariant::createFromInt(1));
	var_Column = COM::createFromObject(exg2antt1.Columns()).Item(COMVariant::createFromInt(4)); com_Column = var_Column;
	com_Column.Def(18/*exCellValueToItemBarProperty*/,COMVariant::createFromInt(2));
	var_ConditionalFormats = exg2antt1.ConditionalFormats(); com_ConditionalFormats = var_ConditionalFormats;
		var_ConditionalFormat = com_ConditionalFormats.Add("%1 in (3,5)"); com_ConditionalFormat = var_ConditionalFormat;
			com_ConditionalFormat.ApplyToBars("Task");
			com_ConditionalFormat.BarColor(WinApi::RGB2int(255,0,0));
			com_ConditionalFormat.BarOverviewColor(WinApi::RGB2int(255,0,0));
			com_ConditionalFormat.BackColor(WinApi::RGB2int(255,128,128));
			com_ConditionalFormat.ChartBackColor(WinApi::RGB2int(255,128,128));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,256);
}
*/
1857
How can I get ride / hide the image being dragged by OLE Drag and Drop
// OLEStartDrag event is not supported. Use the DragEnter,DragLeave,DragOver, DragDrop ... events.
public void init()
{
	COM com_Items;
	anytype var_Items;
	int h;
	;

	super();

	exg2antt1.OLEDropMode(1/*exOLEDropManual*/);
	exg2antt1.Background(34/*exDragDropAfter*/,WinApi::RGB2int(255,255,255));
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exg2antt1.Columns().Add("Default");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
}
1856
How do I change the visual appearance of the split bars

public void init()
{
	COM com_Appearance,com_Bar,com_Bar1,com_Bars,com_Chart,com_Items;
	anytype var_Appearance,var_Bar,var_Bar1,var_Bars,var_Chart,var_Items;
	int h;
	str var_s,var_s1;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DefaultItemHeight(24);
	var_Appearance = exg2antt1.VisualAppearance(); com_Appearance = var_Appearance;
		var_s = "gBFLBCJwBAEHhEJAAEhABEgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGMYhTgmFgAQhFcZQSB0Eg1BKMYwjOJgFgmEQxDQNIBQSLIYQiGSWZBGUBJDjWGgyQjOEByDI";
		var_s = var_s + "MRwjE6UZBgeCRViEMo9RrSEZSLAdGRFAaVYDdULBEACU5VRZQFCwTQcBhpIyoZpkECobh2TYgQjYNT1NSkLxeGoSbbuGhBQrOAw1XTEMhyDR0LTJM6bMBACqrBi2L4xU";
		var_s = var_s + "RfOBRXLQAYbHjAZ7rSgacjKRpKRbmAV4Oh+O5pQjadp1TidNwHLoAK7nGwbbgmfwAZrAdjABj1HgBNS2dDkaabQrKEZ4XYAHAXVROOQTWIANb2XC4bwSLAwTJJYzjThi";
		var_s = var_s + "C2GInFOOQckiVw6AeCIvHSBzkCwDxfE6WZ2jsehICadx5kGYZdDgMRrA2c4NmWY56jyGxgEQJIgGkGJHEGVByBkWoCjkNAAAQIQ2AYRoDGQJAoKuZYgBgRZHggHZqAkA";
		var_s = var_s + "ZDjYGA7E8KB0kyB5LiiBgigiYhIgiQ4Jk4WIkn6CphjQDgbDmIwDBIMg3GMQ4uDaDZjgiZg6DIY5DGIPg/GQBAMneEJMFkFJqhGTppCYSoSmSSQ2EoPJlAMIhSDmZREA";
		var_s = var_s + "yVYVk0eRkm+FpkmkdhehaTp4iSZQxiYRAODIMQODmJJxhqTwJjYbobmcCZGHKGxLjmVQDC+J4DiYeg8GGWYuH6H5oAoBoCgcTwimaBodmeGZongPRPCoCoOiOZ5qBIIo";
		var_s = var_s + "iAuaZomkPoPGOToEiaaZKHaHYfiUA5OhMAAngoVh6iYKYqHqKoqmGWoGiOKRkHOKJ7D2TxKgaNotmuCpmFAPQrkqPh4iwaw6laOowmwOpwnSL4LmiXJ9D4TxbBqTozm0";
		var_s = var_s + "CxGjwPRtEsIJsjWT4Dlydo1C2Sx2l6N5uAOWpijIDpbhYQ42i4K4mmqOpukuMpnjIJIjmKco5m8S5WnaPZkDuSJ4h0S46FKcY8m+DAHAGPovkoUhgD4cILmsCpCnCTA2";
		var_s = var_s + "nKQgPhwFokh4JpjmsFpEDGDBnBqRpwgwWJ6kSKhZjie5FnGTIXCWR4yAmYh+D+D48g8HpLnMDJHDIPoylObwpWIY5/CyTJzkydw1kSIhzA6ZQ7E+fJrDWUZ0g0JxKksT";
		var_s = var_s + "5NDSPJTmUaRcmAN5Nn0FJ/lMdYNGcWpWnWHRaGAMZ2AQDoEDKNhLicVpViQDYnGqWpPl2HxFDQNwJgoLoGGaCcDInRdjMCuNYbovR2D2FyNgNIcAJC5FWKwNwcBqAzCW";
		var_s = var_s + "BoPgTA8BkEwFwN4HRjjyAMH8EgcQ5CaGIFoAAHQ3AgAAIAQBAQ==";
		com_Appearance.Add(1,COMVariant::createFromStr(var_s));
		var_s1 = "gBFLBCJwBAEHhEJAAEhABBYDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGMYhTgmFgAQhFcZQSB0Eg1BKMYwjOJgFgmEQxDQNIBQSLIYQiGSWZTgMYRSASI43RoMUIzVA";
		var_s1 = var_s1 + "cQxDEaIZLlGQYHgkNIhDJPcZ0VDUbQGBiQIRmIAHNBwJJUVZFdBDLQkQy5HapZDkECobA+CZQTzUUI1LS9WS1HYaRJle4YRDUMJyQjdV4TRINHQvMinYzqOzrOhaW5TS";
		var_s1 = var_s1 + "zLcqyCK0SxxR4AJ4yGobJjiQYJShXcxyDQ8dyZC7PQohG7ofxUAKDVjhMjZRQeMS9JCwaThHElRQHMyBdJkKA9Iq2WaGXBeeQ3JbNbzrYzHb5hHZgAzTOoWbzWFT8BJO";
		var_s1 = var_s1 + "FOCAYGcJJjHGTh+C2H40AAL5ckyBQDFkKoWHYLw9iGTpGDUY4zkIdwbF8JhbgMc5hF6OJ8C6BhTkOcBAlsR4NnQaAflAIQJBQBoRgwdAdEcIYVEUQJBGYOBCBMYQUGgN";
		var_s1 = var_s1 + "hCEKB5FB4VBBgQXJgF+IAzA4Ig5GIQIQBwOxiGiIgngoYpIi4LoKiMA5KDIMwjEKakmk6OJkkmDpNgidgtgwI55AYJw5iQQwSEYNxkgiZJrEITppDSc4TkyCREmeFJkC";
		var_s1 = var_s1 + "kAkLmWAwWFoOolkkNheDuJJJDSb4YmIQ4UkaGZlFkVJVhqTR5jYYw7mWeQ1AkPAnEmVh1C6Z4JiYL4KGQYwQmOH5PBoBh2h0EIaAaBg8GMI5Ij6IpokoNoOiOaJDiaEo";
		var_s1 = var_s1 + "iA8KgegGIRpGoZoaiaaZDmCdYlGkZAmgmKJqEqFomimaoKCaIoqGqSo2iwQhknqRoyiyaxKlaNotk8OpCjiLprkqbQJD0LALAaQowmwSwWkaMZQhOVpKjKbJLDaTozm0";
		var_s1 = var_s1 + "CxFAkPYtEsVpWjWbYLGaWo2lCGRil6N5pAuBpiDsbhLH6Zo3G4ax6HhYgpFibYjCWa4ml4QhPguVp2D4b4Li6bYPmiSZWngPhvGuWQJj+b5zmsBo+iePAmDCIwoGwGJ6";
		var_s1 = var_s1 + "kEL4MA8EJDjCC46FWQwoBObwGkQD4UCcDpDg+PIHBWPpiHwYJxD+MgcH8BpH4cBJ7kicIrnKC4hg+fIjCoPoQhyOwuD8M5CnMPpJCMCIIkOOQOlOfw1k6MnJDwPw0GOf";
		var_s1 = var_s1 + "hvDGdQNAIKdalOAJfDedJdC8SxCeyNJQleZhdEoJ4iEyLYWlWVx0GQJJslqTQtjcVJYi6aZ8mMM43EmFwCECJkfYyWiDuAuG0EgdBNB8AYHYMgxwEM1EAIAgIA==";
		com_Appearance.Add(2,COMVariant::createFromStr(var_s1));
		com_Appearance.Add(3,"CP:2 -2 -2 2 2");
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bars = com_Chart.Bars(); com_Bars = var_Bars;
			var_Bar = com_Bars.Add("A"); com_Bar = var_Bar;
				com_Bar.Height(15);
				com_Bar.Color(0x2000000);
				com_Bar.Pattern(6/*exPatternBDiagonal*/);
			var_Bar1 = com_Bars.Add("Task:A"); com_Bar1 = var_Bar1;
				com_Bar1.Shortcut("Task");
				com_Bar1.Height(15);
				com_Bar1.Color(0x1000000);
				com_Bar1.Def(20/*exBarKeepWorkingCount*/,COMVariant::createFromBoolean(true));
		com_Chart.NonworkingDaysColor(WinApi::RGB2int(240,240,240));
		com_Chart.SelBarColor(WinApi::RGB2int(0,0,255));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Task 1"),"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/16/2001",213)));
		h = com_Items.AddItem("Task 2");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/16/2001",213)),"");
		com_Items.ItemBar(h,"",33/*exBarColor*/,COMVariant::createFromInt(65535));
		h = com_Items.AddItem("Task 3");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/16/2001",213)),"");
		com_Items.ItemBar(h,"",257/*exBarSelected*/,COMVariant::createFromBoolean(true));
		h = com_Items.AddItem("Task 4");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/16/2001",213)),"");
		com_Items.ItemBar(h,"",40/*exBarNonWorkingColor*/,COMVariant::createFromInt(58753152));
		h = com_Items.AddItem("Task 5");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/16/2001",213)),"");
		com_Items.ItemBar(h,"",40/*exBarNonWorkingColor*/,COMVariant::createFromInt(25198720));
		h = com_Items.AddItem("Task 6");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/16/2001",213)),"");
		com_Items.ItemBar(h,"",40/*exBarNonWorkingColor*/,COMVariant::createFromInt(2130771712));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1855
Is there a way to display automatically the duration ( days, hours, minutes ) of the bar next to it

public void init()
{
	COM com_Bar,com_Bars,com_Chart,com_Column,com_Items;
	anytype var_Bar,var_Bars,var_Chart,var_Column,var_Items;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Tasks")); com_Column = var_Column;
		com_Column.AllowSizing(false);
		com_Column.Width(36);
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("4/6/2009",213)));
		com_Chart.LevelCount(2);
		var_Bars = COM::createFromObject(com_Chart.Bars()); com_Bars = var_Bars;
		var_Bar = COM::createFromObject(com_Bars).Add("Task:Progress"); com_Bar = var_Bar;
			com_Bar.Shortcut("TaskS");
			var_s = "<%=((1:=int(0:= (%258))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0";
			var_s = var_s + " ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%>";
			com_Bar.Def(3/*exBarCaption*/,COMVariant::createFromStr(var_s));
		com_Chart.ResizeUnitScale(1048576/*exMinute*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("T1"),"TaskS",COMVariant::createFromUtcDateTime(str2Datetime("4/10/2009 2:30:00",213)),COMVariant::createFromUtcDateTime(str2Datetime("4/16/2009 2:30:00",213)));
		com_Items.AddBar(com_Items.AddItem("T2"),"TaskS",COMVariant::createFromUtcDateTime(str2Datetime("4/14/2009 9:00:00",213)),COMVariant::createFromUtcDateTime(str2Datetime("4/22/2009 10:10:00",213)));
		com_Items.ItemBar(0,"<*>",20/*exBarKeepWorkingCount*/,COMVariant::createFromBoolean(true));
		com_Items.ItemBar(0,"<*>",4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
1854
Is there a way to display automatically the duration ( days, hours, minutes ) of the bar next to it

public void init()
{
	COM com_Bar,com_Chart,com_Column,com_Items;
	anytype var_Bar,var_Chart,var_Column,var_Items;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Tasks")); com_Column = var_Column;
		com_Column.AllowSizing(false);
		com_Column.Width(36);
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("4/6/2009",213)));
		com_Chart.LevelCount(2);
		com_Chart.UnitScale(65536/*exHour*/);
		com_Chart.ResizeUnitScale(1048576/*exMinute*/);
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
		var_s = "<%=((1:=int(0:= (%513))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0";
		var_s = var_s + " ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%>";
		com_Bar.Def(3/*exBarCaption*/,COMVariant::createFromStr(var_s));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("T1"),"Task",COMVariant::createFromUtcDateTime(str2Datetime("4/6/2009 2:30:00",213)),COMVariant::createFromUtcDateTime(str2Datetime("4/6/2009 12:35:00",213)));
		com_Items.AddBar(com_Items.AddItem("T2"),"Task",COMVariant::createFromUtcDateTime(str2Datetime("4/6/2009 9:00:00",213)),COMVariant::createFromUtcDateTime(str2Datetime("4/6/2009 10:10:00",213)));
		com_Items.ItemBar(0,"<*>",4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
1853
Does it support single or multiple split pane views

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int hSummary,hTask;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Task");
	exg2antt1.Background(18/*exSplitBar*/,WinApi::RGB2int(128,128,128));
	exg2antt1.Background(142/*exCSplitBar*/,WinApi::RGB2int(40,40,40));
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,76);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Summary"); com_Bar = var_Bar;
			com_Bar.Pattern(3/*exPatternShadow*/);
			com_Bar.Shape(4/*exShapeSolidDown*/);
			com_Bar.Color(WinApi::RGB2int(0,0,255));
			com_Bar.StartColor(com_Bar.Color());
			com_Bar.EndColor(com_Bar.Color());
		com_Chart.AllowSplitPane(3/*exAllowTwoSplitPane | exAllowOneSplitPane*/);
		com_Chart.SplitPaneWidth("128,128");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hSummary = com_Items.AddItem("Summary");
		com_Items.AddBar(hSummary,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"");
		hTask = com_Items.InsertItem(hSummary,,"Task A");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"K1");
		hTask = com_Items.InsertItem(hSummary,,"Task B");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"K2");
		hTask = com_Items.InsertItem(hSummary,,"Task C");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("2/23/2001",213)),COMVariant::createFromDate(str2Date("2/27/2001",213)),"K3");
		com_Items.ExpandItem(hSummary,true);
		com_Items.DefineSummaryBars(hSummary,"",-1,"<*>");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,76);
}
*/
1852
How can I programmatically add more split panes ( by code)

public void init()
{
	COM com_Bar,com_Chart,com_Chart1,com_Items;
	anytype var_Bar,var_Chart,var_Chart1,var_Items;
	int hSummary,hTask;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Task");
	exg2antt1.Background(18/*exSplitBar*/,WinApi::RGB2int(128,128,128));
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,76);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Summary"); com_Bar = var_Bar;
			com_Bar.Pattern(3/*exPatternShadow*/);
			com_Bar.Shape(4/*exShapeSolidDown*/);
			com_Bar.Color(WinApi::RGB2int(0,0,255));
			com_Bar.StartColor(com_Bar.Color());
			com_Bar.EndColor(com_Bar.Color());
		com_Chart.AllowSplitPane(1/*exAllowOneSplitPane*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hSummary = com_Items.AddItem("Summary");
		com_Items.AddBar(hSummary,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"");
		hTask = com_Items.InsertItem(hSummary,,"Task A");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"K1");
		hTask = com_Items.InsertItem(hSummary,,"Task B");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"K2");
		hTask = com_Items.InsertItem(hSummary,,"Task C");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("2/23/2001",213)),COMVariant::createFromDate(str2Date("2/27/2001",213)),"K3");
		com_Items.ExpandItem(hSummary,true);
		com_Items.DefineSummaryBars(hSummary,"",-1,"<*>");
	var_Chart1 = exg2antt1.Chart(); com_Chart1 = var_Chart1;
		com_Chart1.ScrollTo(com_Chart1.EndPrintDate(),COMVariant::createFromInt(1));
		com_Chart1.SplitPaneWidth("128,128,128");
		com_Chart1.ScrollTo(com_Chart1.StartPrintDate(),COMVariant::createFromInt(1));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,76);
}
*/
1851
How can I programmatically add a split pane, or adding a split view at runtime

public void init()
{
	COM com_Bar,com_Chart,com_Chart1,com_Items;
	anytype var_Bar,var_Chart,var_Chart1,var_Items;
	int hSummary,hTask;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Task");
	exg2antt1.Background(142/*exCSplitBar*/,WinApi::RGB2int(40,40,40));
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,76);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Summary"); com_Bar = var_Bar;
			com_Bar.Pattern(3/*exPatternShadow*/);
			com_Bar.Shape(4/*exShapeSolidDown*/);
			com_Bar.Color(WinApi::RGB2int(0,0,255));
			com_Bar.StartColor(com_Bar.Color());
			com_Bar.EndColor(com_Bar.Color());
		com_Chart.AllowSplitPane(1/*exAllowOneSplitPane*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hSummary = com_Items.AddItem("Summary");
		com_Items.AddBar(hSummary,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"");
		hTask = com_Items.InsertItem(hSummary,,"Task A");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"K1");
		hTask = com_Items.InsertItem(hSummary,,"Task B");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"K2");
		hTask = com_Items.InsertItem(hSummary,,"Task C");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("2/23/2001",213)),COMVariant::createFromDate(str2Date("2/27/2001",213)),"K3");
		com_Items.ExpandItem(hSummary,true);
		com_Items.DefineSummaryBars(hSummary,"",-1,"<*>");
	var_Chart1 = exg2antt1.Chart(); com_Chart1 = var_Chart1;
		com_Chart1.ScrollTo(com_Chart1.EndPrintDate(),COMVariant::createFromInt(1));
		com_Chart1.SplitPaneWidth("128");
		com_Chart1.ScrollTo(com_Chart1.StartPrintDate(),COMVariant::createFromInt(1));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,76);
}
*/
1850
Is there any way, property, procedure or anything else to split the control into multiple views

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int hSummary,hTask;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Task");
	exg2antt1.Background(142/*exCSplitBar*/,WinApi::RGB2int(40,40,40));
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,76);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Summary"); com_Bar = var_Bar;
			com_Bar.Pattern(3/*exPatternShadow*/);
			com_Bar.Shape(4/*exShapeSolidDown*/);
			com_Bar.Color(WinApi::RGB2int(0,0,255));
			com_Bar.StartColor(com_Bar.Color());
			com_Bar.EndColor(com_Bar.Color());
		com_Chart.AllowSplitPane(1/*exAllowOneSplitPane*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hSummary = com_Items.AddItem("Summary");
		com_Items.AddBar(hSummary,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"");
		hTask = com_Items.InsertItem(hSummary,,"Task A");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"K1");
		hTask = com_Items.InsertItem(hSummary,,"Task B");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"K2");
		hTask = com_Items.InsertItem(hSummary,,"Task C");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("2/23/2001",213)),COMVariant::createFromDate(str2Date("2/27/2001",213)),"K3");
		com_Items.ExpandItem(hSummary,true);
		com_Items.DefineSummaryBars(hSummary,"",-1,"<*>");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,76);
}
*/
1849
It appears that I can not use the ItemFromPoint property in my environment. What else I can do

// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	;
	print( exg2antt1.ExecuteTemplate("Dim c, hit; ItemFromPoint(-1,-1, c, hit )") );
}

public void init()
{
	COM com_Column,com_Items;
	anytype var_Column,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Default")); com_Column = var_Column;
		com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		com_Column.PartialCheck(true);
	/*should be called during the form's activate method*/ exg2antt1.Chart().PaneWidth(true,0);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root 1");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Root 2");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(true,0);
}
*/
1848
How can I change the color for selected links (ebn)

public void init()
{
	COM com_Appearance,com_Chart,com_Items;
	anytype var_Appearance,var_Chart,var_Items;
	int h1,h2,h3;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Appearance = exg2antt1.VisualAppearance(); com_Appearance = var_Appearance;
		com_Appearance.RenderType(-2);
		var_s = "gBFLBCJwBAEHhEJAEGg4BNkMQAAYAQGKIYBkAKBQAGaAoDDYNQwQwAAwjIKEEwsACEIrjKCVIgkHYJRjGEZxMAsEwjAoaQChEZRUhEMgxDDIIxAJIcaw0GSEZwgOQZBi";
		var_s = var_s + "OEYnDANMgzDLMZR7DajYymSA6LiKNo+QjKFB0NLMVRtEIIIzCSCaNomT4DS4NIi2DYcVhhMqBYbtCZZBo2FpZUxXdL0BJMVxbHKYJikW4pVjoAJ+TxccjVDQNJyLQ6rY";
		var_s = var_s + "zuAAKNpuO58RbdGDQHA9KyfLCEcTxYAMbp6X5kaBZVp2VCMRzbTLUIDzPNVCTrNIaJioAaMeiCG5NUzieqRNalLABFjZMIHDbtGynDIJZruW52+CLIZpWbEOiRXr2Txx";
		var_s = var_s + "gGYp5Fie5mAYBgIgSFDrDOIZUmQZYiECXJUjIEQ3lUGgbEIRQcg+Hg8DEFxYFuOR/i+X5znufh/omBgCgCVwjn4BoBmCCAmAqApgkefgMgOYQID4DoELsUgTgUYYIC4F";
		var_s = var_s + "4GGGSAaBuBxhhgfgggUYgog4EYJGIaBJn6ChiBiLgsgkIpoj4J4BCMSJWDaDZjgiZgCEAQCAgA==";
		com_Appearance.Add(1,COMVariant::createFromStr(var_s));
		com_Appearance.Add(2,"CP:1 -2 -2 2 2");
	exg2antt1.DefaultItemHeight(24);
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.NonworkingDays(0);
		com_Chart.LinksStyle(0/*exLinkSolid*/);
		com_Chart.LinksWidth(2);
		com_Chart.SelLinkColor(0x20000ff);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Task 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"");
		h2 = com_Items.AddItem("Task 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"");
		com_Items.AddLink("L1",h1,"",h2,"");
		com_Items.Link("L1",257/*exLinkSelected*/,COMVariant::createFromBoolean(true));
		h3 = com_Items.AddItem("Task 3");
		com_Items.AddBar(h3,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"");
		com_Items.AddLink("L2",h2,"",h3,"");
		com_Items.SchedulePDM(0,"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1847
How can I change the color for selected links (color, no frame)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1,h2,h3;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DefaultItemHeight(24);
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.NonworkingDays(0);
		com_Chart.LinksStyle(0/*exLinkSolid*/);
		com_Chart.LinksWidth(2);
		com_Chart.SelLinkColor(0x7f0000ff);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Task 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"");
		h2 = com_Items.AddItem("Task 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"");
		com_Items.AddLink("L1",h1,"",h2,"");
		com_Items.Link("L1",257/*exLinkSelected*/,COMVariant::createFromBoolean(true));
		h3 = com_Items.AddItem("Task 3");
		com_Items.AddBar(h3,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"");
		com_Items.AddLink("L2",h2,"",h3,"");
		com_Items.SchedulePDM(0,"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1846
How can I change the color for selected links (color, frame)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h1,h2,h3;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DefaultItemHeight(24);
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.NonworkingDays(0);
		com_Chart.LinksStyle(0/*exLinkSolid*/);
		com_Chart.LinksWidth(2);
		com_Chart.SelLinkColor(WinApi::RGB2int(255,0,0));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Task 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"");
		h2 = com_Items.AddItem("Task 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"");
		com_Items.AddLink("L1",h1,"",h2,"");
		com_Items.Link("L1",257/*exLinkSelected*/,COMVariant::createFromBoolean(true));
		h3 = com_Items.AddItem("Task 3");
		com_Items.AddBar(h3,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"");
		com_Items.AddLink("L2",h2,"",h3,"");
		com_Items.SchedulePDM(0,"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1845
By default, the bar gets selected once the user releases the button of the mouse. Is it possible to change this behavior so the bar gets selected once the user presses the button of the mouse
// MouseDown event - Occurs when the user presses a mouse button.
void onEvent_MouseDown(int   _Button,int   _Shift,int   _X,int   _Y)
{
	COM com_Items;
	COMVariant b;
	anytype var_Items;
	int h;
	;
	h = exg2antt1.ItemFromPoint(-1,-1,c,hit);
	b = exg2antt1.Chart().BarFromPoint(-1,-1);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.ItemBar(0,"<*>",257/*exBarSelected*/,COMVariant::createFromBoolean(false));
		com_Items.ItemBar(h,b,257/*exBarSelected*/,COMVariant::createFromBoolean(true));
}

public void init()
{
	COM com_Appearance,com_Chart,com_Items;
	COMVariant b;
	anytype var_Appearance,var_Chart,var_Items;
	int h;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DefaultItemHeight(32);
	var_Appearance = exg2antt1.VisualAppearance(); com_Appearance = var_Appearance;
		var_s = "gBFLBCJwBAEHhEJAEGg4BNkMQAAYAQGKIYBkAKBQAGaAoDDYNQwQwAAwjIKEEwsACEIrjKCVIgkHYJRjGEZxMAsEwjAoaQChEZRUhEMgxDDIIxAJIcaw0GSEZwgOQZBi";
		var_s = var_s + "OEYnDANMgzDLMZR7DajYymSA6LiKNo+QjKFB0NLMVRtEIIIzCSCaNomT4DS4NIi2DYcVhhMqBYbtCZZBo2FpZUxXdL0BJMVxbHKYJikW4pVjoAJ+TxccjVDQNJyLQ6rY";
		var_s = var_s + "zuAAKNpuO58RbdGDQHA9KyfLCEcTxYAMbp6X5kaBZVp2VCMRzbTLUIDzPNVCTrNIaJioAaMeiCG5NUzieqRNalLABFjZMIHDbtGynDIJZruW52+CLIZpWbEOiRXr2Txx";
		var_s = var_s + "gGYp5Fie5mAYBgIgSFDrDOIZUmQZYiECXJUjIEQ3lUGgbEIRQcg+Hg8DEFxYFuOR/i+X5znufh/omBgCgCVwjn4BoBmCCAmAqApgkefgMgOYQID4DoELsUgTgUYYIC4F";
		var_s = var_s + "4GGGSAaBuBxhhgfgggUYgog4EYJGIaBJn6ChiBiLgsgkIpoj4J4BCMSJWDaDZjgiZgCEAQCAgA==";
		com_Appearance.Add(1,COMVariant::createFromStr(var_s));
		com_Appearance.Add(2,"CP:1 -2 -2 2 2");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.AllowSelectObjects(0/*exNoSelectObjects*/);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2002",213)));
		com_Chart.SelBarColor(0x2000000);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(0,48);
	exg2antt1.Columns().Add("Task");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Task");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2002",213)),COMVariant::createFromDate(str2Date("1/4/2002",213)),"A");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/6/2002",213)),COMVariant::createFromDate(str2Date("1/10/2002",213)),"B");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/11/2002",213)),COMVariant::createFromDate(str2Date("1/14/2002",213)),"C");
		com_Items.ItemBar(h,"B",257/*exBarSelected*/,COMVariant::createFromBoolean(true));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(0,48);
}
*/
1844
How can I change the bar's color (sample 3, ebn, individual, global)

public void init()
{
	COM com_Appearance,com_Bar,com_Bar1,com_Chart,com_Items;
	anytype var_Appearance,var_Bar,var_Bar1,var_Chart,var_Items;
	int hSummaryJ,hSummaryK,hTaskJ,hTaskK;
	str var_s,var_s1;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Appearance = exg2antt1.VisualAppearance(); com_Appearance = var_Appearance;
		com_Appearance.RenderType(-2);
		var_s = "gBFLBCJwBAEHhEJAAEhABN0GACAADACAxRDAMgBQKAAzQFAYahuGSGAAGMYxQgmFgAQhFcZQSKUOQTDKMIziYBYJhEMQyDAAUIjOKsIhkGYcZAGQBJCjWGodQLOEgwHI";
		var_s = var_s + "ERQjEyUJAGGQIHhyPYbUbGUpQHKkeRtGqgBgoKhKEouNYgAbGYIwTRsdyfDSXBpEWwbDgkNQwWTDNoRDIUQStCysaYjOpnfrUAJ1P7FdQ1NJkXRhGSSK7maapaiCSZ6S";
		var_s = var_s + "TCMj1FhVKSNJ7DQKhGpgKh/ApgYpQOK4fLNXyRBK4QAyKA6bgPFZOZbFViaXY1V5bNKrcjhHQwAyHJ4XXRdV4YRAkUT4GqiJKGSYcQhuXZWbRqO6ABhef6DRThc6jKpF";
		var_s = var_s + "HIE4llEcojHqSZNgoIxnlgd5thsLREleL43gsYZ9BkaAYkMAgAm+CxGDWWAtiKCRfjcdRgHoHYnicUwgAIEIREAaQYkcQZUHIGRUDQJBOEYRAhDYCxGgMZAkCgdYQhaX";
		var_s = var_s + "QIAYERwQuahXggdgeG6VZ4H4IhdiIGIOB8YIiGiHZZgqYpGF4KYHiKCI+CAU5jCiTQ2g0YhEFyax4gABAEIC";
		com_Appearance.Add(1,COMVariant::createFromStr(var_s));
		var_s1 = "gBFLBCJwBAEHhEJAAEhABU0IQAAYAQGKQYhiAKBQAGaAoDDcMA4QwAAyjAKMEwsACEIrjKCRShyCYZRhGcTAJBMIhiGQYAChEZxVhEMgzDjIAxSJAcQRFESaAABGCQGh";
		var_s1 = var_s1 + "+N4/S4NIi0CIsZQjCaiZ7pKA5bgMCo+UrNMixZQVCSOGChYRpCaZWpGGodQRUFbVHAlKypJKCKrEWSrDhuYAAW7XM7yBS1TzVNSuLZtaLqSroAJ1WTWMB0Ra8NzZEKfa";
		var_s1 = var_s1 + "ZACj4arKejrRDCMAggI=";
		com_Appearance.Add(2,COMVariant::createFromStr(var_s1));
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
			com_Bar.Color(0x1000000);
		var_Bar1 = COM::createFromObject(com_Chart.Bars()).Item("Summary"); com_Bar1 = var_Bar1;
			com_Bar1.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
			com_Bar1.Color(0x2000000);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hSummaryJ = com_Items.AddItem("Summary A");
		com_Items.AddBar(hSummaryJ,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"J");
		hTaskJ = com_Items.InsertItem(hSummaryJ,,"Task A.1");
		com_Items.AddBar(hTaskJ,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"J1");
		hTaskJ = com_Items.InsertItem(hSummaryJ,,"Task A.2");
		com_Items.AddBar(hTaskJ,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"J2");
		com_Items.DefineSummaryBars(hSummaryJ,"J",-1,"<*>");
		hSummaryK = com_Items.AddItem("Summary B");
		com_Items.AddBar(hSummaryK,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"K");
		hTaskK = com_Items.InsertItem(hSummaryK,,"Task B.1");
		com_Items.AddBar(hTaskK,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"K1");
		hTaskK = com_Items.InsertItem(hSummaryK,,"Task B.2");
		com_Items.AddBar(hTaskK,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"K2");
		com_Items.DefineSummaryBars(hSummaryK,"K",-1,"<*>");
		com_Items.ItemBar(0,"<K*>",33/*exBarColor*/,COMVariant::createFromInt(255));
		com_Items.ExpandItem(0,true);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
1843
How can I change the bar's color (sample 2, global)

public void init()
{
	COM com_Bar,com_Bar1,com_Chart,com_Items;
	anytype var_Bar,var_Bar1,var_Chart,var_Items;
	int hSummaryJ,hSummaryK,hTaskJ,hTaskK;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
			com_Bar.Color(WinApi::RGB2int(255,0,0));
		var_Bar1 = COM::createFromObject(com_Chart.Bars()).Item("Summary"); com_Bar1 = var_Bar1;
			com_Bar1.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
			com_Bar1.Color(WinApi::RGB2int(255,0,0));
			com_Bar1.StartColor(com_Bar1.Color());
			com_Bar1.EndColor(com_Bar1.Color());
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hSummaryJ = com_Items.AddItem("Summary A");
		com_Items.AddBar(hSummaryJ,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"J");
		hTaskJ = com_Items.InsertItem(hSummaryJ,,"Task A.1");
		com_Items.AddBar(hTaskJ,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"J1");
		hTaskJ = com_Items.InsertItem(hSummaryJ,,"Task A.2");
		com_Items.AddBar(hTaskJ,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"J2");
		com_Items.DefineSummaryBars(hSummaryJ,"J",-1,"<*>");
		hSummaryK = com_Items.AddItem("Summary B");
		com_Items.AddBar(hSummaryK,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"K");
		hTaskK = com_Items.InsertItem(hSummaryK,,"Task B.1");
		com_Items.AddBar(hTaskK,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"K1");
		hTaskK = com_Items.InsertItem(hSummaryK,,"Task B.2");
		com_Items.AddBar(hTaskK,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"K2");
		com_Items.DefineSummaryBars(hSummaryK,"K",-1,"<*>");
		com_Items.ExpandItem(0,true);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
1842
How can I change the bar's color (sample 1, individual)

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int hSummaryJ,hSummaryK,hTaskJ,hTaskK;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
		com_Bar.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Summary"); com_Bar = var_Bar;
		com_Bar.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hSummaryJ = com_Items.AddItem("Summary A");
		com_Items.AddBar(hSummaryJ,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"J","  (default)");
		hTaskJ = com_Items.InsertItem(hSummaryJ,,"Task A.1");
		com_Items.AddBar(hTaskJ,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"J1","(default)");
		hTaskJ = com_Items.InsertItem(hSummaryJ,,"Task A.2");
		com_Items.AddBar(hTaskJ,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"J2","(default)");
		com_Items.DefineSummaryBars(hSummaryJ,"J",-1,"<*>");
		hSummaryK = com_Items.AddItem("Summary B");
		com_Items.AddBar(hSummaryK,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"K");
		hTaskK = com_Items.InsertItem(hSummaryK,,"Task B.1");
		com_Items.AddBar(hTaskK,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"K1");
		hTaskK = com_Items.InsertItem(hSummaryK,,"Task B.2");
		com_Items.AddBar(hTaskK,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"K2");
		com_Items.DefineSummaryBars(hSummaryK,"K",-1,"<*>");
		com_Items.ItemBar(hSummaryK,"",33/*exBarColor*/,COMVariant::createFromInt(255));
		com_Items.ItemBar(0,"<K*>",33/*exBarColor*/,COMVariant::createFromInt(255));
		com_Items.ExpandItem(0,true);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
1841
How do I make the control read-only (method 2)

// Edit event - Occurs just before editing the focused cell.
void onEvent_Edit(int   _Item,int   _ColIndex,COMVariant /*bool*/   _Cancel)
{
	;
	_Cancel = true;
}

public void init()
{
	COM com_Column,com_Editor,com_Editor1,com_Items;
	anytype var_Column,var_Editor,var_Editor1,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Editor = COM::createFromVariant(exg2antt1.Columns().Add("Editor")).Editor(); com_Editor = var_Editor;
		com_Editor.EditType(6/*CheckListType*/);
		com_Editor.AddItem(1,"One");
		com_Editor.AddItem(2,"Two");
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Check")); com_Column = var_Column;
		var_Editor1 = com_Column.Editor(); com_Editor1 = var_Editor1;
			com_Editor1.EditType(19/*CheckValueType*/);
			com_Editor1.Option(16/*exCheckValue1*/,COMVariant::createFromInt(2));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(1)),COMVariant::createFromInt(1),COMVariant::createFromInt(0));
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(2)),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
	exg2antt1.EndUpdate();
}
1840
How do I make the control read-only (method 1)

public void init()
{
	COM com_Column,com_Editor,com_Editor1,com_Items;
	anytype var_Column,var_Editor,var_Editor1,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ReadOnly(-1/*exReadOnly*/);
	var_Editor = COM::createFromVariant(exg2antt1.Columns().Add("Editor")).Editor(); com_Editor = var_Editor;
		com_Editor.EditType(6/*CheckListType*/);
		com_Editor.AddItem(1,"One");
		com_Editor.AddItem(2,"Two");
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Check")); com_Column = var_Column;
		var_Editor1 = com_Column.Editor(); com_Editor1 = var_Editor1;
			com_Editor1.EditType(19/*CheckValueType*/);
			com_Editor1.Option(16/*exCheckValue1*/,COMVariant::createFromInt(2));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(1)),COMVariant::createFromInt(1),COMVariant::createFromInt(0));
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(2)),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
	exg2antt1.EndUpdate();
}
1839
The ReadOnly property does not prevent changing the column's check-box (sample 2)

public void init()
{
	COM com_Column,com_Column1,com_Editor,com_Items;
	anytype var_Column,var_Column1,var_Editor,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ShowFocusRect(false);
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("C1")); com_Column = var_Column;
		com_Column.AllowSizing(false);
		com_Column.Width(18);
		var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
		com_Editor.EditType(19/*CheckValueType*/);
	exg2antt1.Columns().Add("C2");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(0)),COMVariant::createFromInt(1),"Item 1");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(-1)),COMVariant::createFromInt(1),"Item 2");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(0)),COMVariant::createFromInt(1),"Item 3");
	exg2antt1.ReadOnly(true);
	var_Column1 = COM::createFromObject(exg2antt1.Columns()).Item(COMVariant::createFromInt(0)); com_Column1 = var_Column1;
	var_Editor = COM::createFromObject(com_Column1).Editor(); com_Editor = var_Editor;
	com_Editor.Option(17/*exCheckValue2*/,COMVariant::createFromInt(2));
	exg2antt1.EndUpdate();
}
1838
The ReadOnly property does not prevent changing the column's check-box (sample 1)

public void init()
{
	COM com_Column,com_Editor,com_Items;
	anytype var_Column,var_Editor,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ShowFocusRect(false);
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("C1")); com_Column = var_Column;
		com_Column.AllowSizing(false);
		com_Column.Width(18);
		var_Editor = com_Column.Editor(); com_Editor = var_Editor;
			com_Editor.EditType(19/*CheckValueType*/);
			com_Editor.Option(17/*exCheckValue2*/,COMVariant::createFromInt(1));
	exg2antt1.Columns().Add("C2");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(0)),COMVariant::createFromInt(1),"Item 1");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(-1)),COMVariant::createFromInt(1),"Item 2");
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(0)),COMVariant::createFromInt(1),"Item 3");
	exg2antt1.ReadOnly(true);
	exg2antt1.EndUpdate();
}
1837
How can I change the visual appearance of the control's split bar (sample 3)

public void init()
{
	COM com_Appearance,com_Chart;
	anytype var_Appearance,var_Chart;
	str var_s,var_s1,var_s2;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Default");
	var_Appearance = exg2antt1.VisualAppearance(); com_Appearance = var_Appearance;
		var_s = "gBFLBCJwBAEHhEJAAEhABPsIQAAYAQGKQYhiAKBQAGaAoDDcMA4QwAAyjAKMEwsACEIrjKCRShyCYZRrGUQxCKIZhzEgYRokAYYRDIMg5SBIETzFIMCQ9AaaJpieRJGi";
		var_s = var_s + "iKoJSxHErgFD8QxzEKOZqnCapViAMpOAZQAwDAIoWhpKKBRhqOpRUhaID/WAAFCUZK4ASTDCyLRgNy4lACgI";
		com_Appearance.Add(1,COMVariant::createFromStr(var_s));
		var_s1 = "gBFLBCJwBAEHhEJAAEhABPkIQAAYAQGKQYhiAKBQAGaAoDDcMA4QwAAyjAKMEwsACEIrjKCRShyCYZRrGUQxCKIZhzEgYRoiEYhXDiIAxARHcgyBIMPQJGSaZpkSRpIi";
		var_s1 = var_s1 + "qHItS6BM4RVKkcw7G6BaJnGJpADKTQGQiMIwDAIoWhpKCBaiqSpqMglf5fg6pOJqHACZZKWLNLpxDBMAkBA=";
		com_Appearance.Add(2,COMVariant::createFromStr(var_s1));
		var_s2 = "gBFLBCJwBAEHhEJAAEhABUUIQAAYAQGKQYhiAKBQAGaAoDDcMA4QwAAyjAKMEwsACEIrjKCRShyCYZRrGQCwTCIYhmHKSRhGSIRSDcOIgDCBEbyDIEQw9AiZZqmaRZHi";
		var_s2 = var_s2 + "mK4cS5MEhwHKsLSLGyOZwoSapbgmJooU5KUwSYKQcxBI6laYpIAKJhiWobTxUEBwMKlJw5KoBJxjKqIbp2XZsUxIAxXEA1HBgGASRZGS5bDreeQ0UZCL74GAFUy/Liba";
		var_s2 = var_s2 + "6weqnLhGCYBgIA==";
		com_Appearance.Add(3,COMVariant::createFromStr(var_s2));
	exg2antt1.Background(18/*exSplitBar*/,0x1808080);
	exg2antt1.Background(141/*exHSplitBar*/,0x2808080);
	exg2antt1.Background(142/*exCSplitBar*/,0x3010101);
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		com_Chart.HistogramVisible(true);
		com_Chart.HistogramHeight(64);
		com_Chart.OverviewHeight(48);
		com_Chart.OverviewVisible(-1/*exOverviewShowAll*/);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
1836
How can I change the color for the control's split bar (sample 2)

public void init()
{
	COM com_Chart;
	anytype var_Chart;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Default");
	exg2antt1.Background(18/*exSplitBar*/,WinApi::RGB2int(190,190,190));
	exg2antt1.Background(141/*exHSplitBar*/,WinApi::RGB2int(128,128,128));
	exg2antt1.Background(142/*exCSplitBar*/,WinApi::RGB2int(0,0,1));
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		com_Chart.HistogramVisible(true);
		com_Chart.HistogramHeight(64);
		com_Chart.OverviewHeight(48);
		com_Chart.OverviewVisible(-1/*exOverviewShowAll*/);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
1835
How do I highlight a bar with an icon, exclamation mark or some warning sign, without using exBarCaption, exBarExtraCaption which I've already use for something else ( sample 2 )

public void init()
{
	COM com_Chart,com_Items,com_Note,com_Notes;
	anytype var_Chart,var_Items,var_Note,var_Notes;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/26/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
	exg2antt1.Columns().Add("Column");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("");
		h = com_Items.AddItem("Item");
		com_Items.AddItem("");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/1/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"A");
	var_Notes = exg2antt1.Chart().Notes(); com_Notes = var_Notes;
		var_Note = com_Notes.Add("Attention",exg2antt1.Items().ItemByIndex(1),"A"," <font ;11>! "); com_Note = var_Note;
			com_Note.RelativePosition(COMVariant::createFromReal(0.5));
			com_Note.ShowLink(0/*exNoteLinkHidden*/);
			com_Note.PartVOffset(1/*exNoteEnd*/,0);
			com_Note.PartShadow(1/*exNoteEnd*/,false);
			com_Note.PartBackColor(1/*exNoteEnd*/,WinApi::RGB2int(255,255,0));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
1834
How do I highlight a bar with an icon, exclamation mark or some warning sign, without using exBarCaption, exBarExtraCaption which I've already use for something else ( sample 1 )

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("12/26/2000",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
	exg2antt1.Columns().Add("Column");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("");
		h = com_Items.AddItem("Item");
		com_Items.AddItem("");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/1/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"A");
		com_Items.ItemBar(h,"A",53/*exBarBackgroundExt*/,"[text=`<bgcolor=FFFF00><font ;11> ! `,align=0x11]");
		com_Items.ItemBar(h,"A",55/*exBarBackgroundExtInflate*/,COMVariant::createFromInt(8));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
1833
How do I get the "Summary" bar being shown in the control's histogram (sample 2)

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int hSummary,hTask;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Columns().Add("Task");
	var_s = "gBFLBCJwBAEHhEJAAEhABU0IQAAYAQGKQYhiAKBQAGaAoDDcMA4QwAAyjAKMEwsACEIrjKCRShyCYZRhGcTAJBMIhiGQYAChEZxVhEMgzDjIAxSJAcQRFESaAABGCQGh";
	var_s = var_s + "+N4/S4NIi0CIsZQjCaiZ7pKA5bgMCo+UrNMixZQVCSOGChYRpCaZWpGGodQRUFbVHAlKypJKCKrEWSrDhuYAAW7XM7yBS1TzVNSuLZtaLqSroAJ1WTWMB0Ra8NzZEKfa";
	var_s = var_s + "ZACj4arKejrRDCMAggI=";
	exg2antt1.VisualAppearance().Add(1,COMVariant::createFromStr(var_s));
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		com_Chart.HistogramVisible(true);
		com_Chart.HistogramHeight(64);
		com_Chart.HistogramView(1136/*exHistogramNoGrouping | exHistogramAllItems*/);
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.HistogramPattern(com_Bar.Pattern());
			com_Bar.HistogramType(256/*exHistCumulative*/);
			com_Bar.HistogramCumulativeOriginalColorBars(1/*exKeepOriginalColor*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hSummary = com_Items.AddItem("Summary");
		com_Items.AddBar(hSummary,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"");
		com_Items.ItemBar(hSummary,"",33/*exBarColor*/,COMVariant::createFromInt(16777216));
		hTask = com_Items.InsertItem(hSummary,,"Task A");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"K1");
		hTask = com_Items.InsertItem(hSummary,,"Task B");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"K2");
		hTask = com_Items.InsertItem(hSummary,,"Task C");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/12/2001",213)),COMVariant::createFromDate(str2Date("1/17/2001",213)),"K3");
		com_Items.ExpandItem(hSummary,true);
		com_Items.DefineSummaryBars(hSummary,"",-1,"<*>");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
1832
How do I get the "Summary" bar being shown in the control's histogram (sample 1)

public void init()
{
	COM com_Bar,com_Bar1,com_Chart,com_Items;
	anytype var_Bar,var_Bar1,var_Chart,var_Items;
	int hSummary,hTask;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_s = "gBFLBCJwBAEHhEJAAEhABU0IQAAYAQGKQYhiAKBQAGaAoDDcMA4QwAAyjAKMEwsACEIrjKCRShyCYZRhGcTAJBMIhiGQYAChEZxVhEMgzDjIAxSJAcQRFESaAABGCQGh";
	var_s = var_s + "+N4/S4NIi0CIsZQjCaiZ7pKA5bgMCo+UrNMixZQVCSOGChYRpCaZWpGGodQRUFbVHAlKypJKCKrEWSrDhuYAAW7XM7yBS1TzVNSuLZtaLqSroAJ1WTWMB0Ra8NzZEKfa";
	var_s = var_s + "ZACj4arKejrRDCMAggI=";
	exg2antt1.VisualAppearance().Add(1,COMVariant::createFromStr(var_s));
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		com_Chart.HistogramVisible(true);
		com_Chart.HistogramHeight(64);
		com_Chart.HistogramView(1136/*exHistogramNoGrouping | exHistogramAllItems*/);
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.HistogramPattern(com_Bar.Pattern());
		var_Bar1 = COM::createFromObject(com_Chart.Bars()).Item("Summary"); com_Bar1 = var_Bar1;
			com_Bar1.Color(0x1000000);
			com_Bar1.HistogramColor(WinApi::RGB2int(0,0,1));
			com_Bar1.HistogramPattern(6/*exPatternBDiagonal*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hSummary = com_Items.AddItem("Summary");
		com_Items.AddBar(hSummary,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"");
		hTask = com_Items.InsertItem(hSummary,,"Task A");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"K1");
		hTask = com_Items.InsertItem(hSummary,,"Task B");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"K2");
		hTask = com_Items.InsertItem(hSummary,,"Task C");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/12/2001",213)),COMVariant::createFromDate(str2Date("1/17/2001",213)),"K3");
		com_Items.ExpandItem(hSummary,true);
		com_Items.DefineSummaryBars(hSummary,"",-1,"<*>");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
1831
How can I temporarily/programmatically hide the control's tooltip

// RClick event - Fired when right mouse button is clicked
void onEvent_RClick()
{
	int nToolTipDelay;
	;
	nToolTipDelay = exg2antt1.ToolTipDelay();
	exg2antt1.ToolTipDelay(0);
	exg2antt1.ToolTipDelay(nToolTipDelay);
}

public void init()
{
	COM com_Chart;
	anytype var_Chart;
	int nToolTipDelay;
	;

	super();

	exg2antt1.BeginUpdate();
	COM::createFromVariant(exg2antt1.Columns().Add("Column w/h tooltip...")).ToolTip("This is a bit of text that's shown when the cursor hovers the column.<br><br><sha ;;0><c>Right-Click to hide it</sha>");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstWeekDay(com_Chart.LocFirstWeekDay());
		com_Chart.MonthNames(com_Chart.LocMonthNames());
		com_Chart.WeekDays(com_Chart.LocWeekDays());
		com_Chart.AMPM(com_Chart.LocAMPM());
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
		com_Chart.UnitScale(4096/*exDay*/);
	exg2antt1.HeaderAppearance(1/*Flat*/);
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
1830
Is it possible to find out the handle of the item, giving the key of the bar only

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Debug(true);
	exg2antt1.DefaultItemHeight(32);
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
		com_Bar.Height(16);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		com_Chart.ShowLinks(1/*exShowExtendedLinks*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Task 1"),"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"K1");
		com_Items.AddBar(com_Items.AddItem("Task 2"),"Task",COMVariant::createFromDate(str2Date("1/5/2001",213)),COMVariant::createFromDate(str2Date("1/7/2001",213)),"K2");
		com_Items.ItemBold(com_Items.ItemBar(0,"K2",512/*exBarParent*/),true);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
1829
How can I programmatically add a link between two bars, knowing the keys of these bars only

public void init()
{
	COM com_Bar,com_Chart,com_Items;
	anytype var_Bar,var_Chart,var_Items;
	int h1,h2,h3;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.Debug(true);
	exg2antt1.DefaultItemHeight(32);
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,64);
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
		com_Bar.Height(16);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		com_Chart.ShowLinks(1/*exShowExtendedLinks*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h1 = com_Items.AddItem("Task 1");
		com_Items.AddBar(h1,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"K1");
		h2 = com_Items.AddItem("Task 2");
		com_Items.AddBar(h2,"Task",COMVariant::createFromDate(str2Date("1/5/2001",213)),COMVariant::createFromDate(str2Date("1/7/2001",213)),"AK2");
		h3 = com_Items.AddItem("Task 3");
		com_Items.AddBar(h3,"Task",COMVariant::createFromDate(str2Date("1/5/2001",213)),COMVariant::createFromDate(str2Date("1/7/2001",213)),"AK3");
		com_Items.AddLink("Link1",0,"K1",0,"AK2");
		com_Items.AddLink("Link2",0,"K1",0,"<A?3>");
		com_Items.AddLink("Link3",0,"<*2>",0,"AK3");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,64);
}
*/
1828
I'm trying to use automatic numbering of the outline. How can I have A, B, C for root items, 1, 2, 3 for the sub-items, and a, b, c for sub-sub-items (sample 3)

public void init()
{
	COM com_Column,com_Columns,com_Items;
	anytype var_Column,var_Columns,var_Items;
	int h,hChild;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exg2antt1.DrawGridLines(-2/*exRowLines*/);
	exg2antt1.AutoDrag(3/*exAutoDragPositionAny*/);
	exg2antt1.HasLines(1/*exSolidLine*/);
	exg2antt1.Indent(16);
	exg2antt1.MarkSearchColumn(false);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("")); com_Column = var_Column;
			com_Column.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
			com_Column.FormatColumn("((1:=(0 :=(1 rpos '.|A-Z||a-z|')) rfind `.`) < 0 ? `<b>` + =:0 + `` :  (=:0 mid (1 + 1 + =:1) )  + `)` ) + ` ` + value");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.InsertItem(h,,"Child");
		hChild = com_Items.InsertItem(h,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(h,,"Child");
		com_Items.ExpandItem(0,true);
		h = com_Items.AddItem("Root");
		com_Items.InsertItem(h,,"Child");
		hChild = com_Items.InsertItem(h,,"Child");
		com_Items.CellState(hChild,COMVariant::createFromInt(0),1);
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(h,,"Child");
	exg2antt1.EndUpdate();
}
1827
I'm trying to use automatic numbering of the outline. How can I have A, B, C for root items, 1, 2, 3 for the sub-items, and a, b, c for sub-sub-items (sample 2)

public void init()
{
	COM com_Column,com_Columns,com_Items;
	anytype var_Column,var_Columns,var_Items;
	int h,hChild;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exg2antt1.GridLineColor(WinApi::RGB2int(190,190,190));
	exg2antt1.DrawGridLines(-2/*exRowLines*/);
	exg2antt1.AutoDrag(3/*exAutoDragPositionAny*/);
	exg2antt1.HasLines(1/*exSolidLine*/);
	exg2antt1.Indent(16);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Default");
		var_Column = COM::createFromVariant(com_Columns.Add("")); com_Column = var_Column;
			com_Column.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
			com_Column.Def(49/*exCellPaddingRight*/,COMVariant::createFromInt(4));
			com_Column.AllowSizing(false);
			com_Column.Width(36);
			com_Column.Position(0);
			var_s = "(1:=(0 :=(1 rpos '.|A-Z||a-z|')) rfind `.`) < 0 ? `<b>` + =:0 : (`............` left 2 * (=:0 count `.`)) + (=:0 mid (1 + 1 + =:";
			var_s = var_s + "1) ) ";
			com_Column.FormatColumn(var_s);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.InsertItem(h,,"Child");
		hChild = com_Items.InsertItem(h,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(h,,"Child");
		com_Items.ExpandItem(0,true);
		h = com_Items.AddItem("Root");
		com_Items.InsertItem(h,,"Child");
		hChild = com_Items.InsertItem(h,,"Child");
		com_Items.CellState(hChild,COMVariant::createFromInt(0),1);
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(h,,"Child");
	exg2antt1.EndUpdate();
}
1826
I'm trying to use automatic numbering of the outline. How can I have A, B, C for root items, 1, 2, 3 for the sub-items, and a, b, c for sub-sub-items (sample 1)

public void init()
{
	COM com_Column,com_Columns,com_Items;
	anytype var_Column,var_Columns,var_Items;
	int h,hChild;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exg2antt1.DrawGridLines(-2/*exRowLines*/);
	exg2antt1.AutoDrag(3/*exAutoDragPositionAny*/);
	exg2antt1.HasLines(1/*exSolidLine*/);
	exg2antt1.Indent(16);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Default");
		var_Column = COM::createFromVariant(com_Columns.Add("")); com_Column = var_Column;
			com_Column.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
			com_Column.Def(49/*exCellPaddingRight*/,COMVariant::createFromInt(4));
			com_Column.Alignment(2/*RightAlignment*/);
			com_Column.AllowSizing(false);
			com_Column.Width(24);
			com_Column.Position(0);
			com_Column.FormatColumn("(1:=(0 :=(1 rpos '.|A-Z||a-z|')) rfind `.`) < 0 ? `<b>` + =:0 : `<i>` + (=:0 mid (1 + 1 + =:1) ) ");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.InsertItem(h,,"Child");
		hChild = com_Items.InsertItem(h,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(h,,"Child");
		com_Items.ExpandItem(0,true);
		h = com_Items.AddItem("Root");
		com_Items.InsertItem(h,,"Child");
		hChild = com_Items.InsertItem(h,,"Child");
		com_Items.CellState(hChild,COMVariant::createFromInt(0),1);
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(hChild,,"Child");
		com_Items.InsertItem(h,,"Child");
	exg2antt1.EndUpdate();
}
1825
How can I programmatically group by columns, without having the control's sort bar visible

public void init()
{
	COM com_rs;
	anytype rs;
	;

	super();

	exg2antt1.BeginUpdate();
	/*should be called during the form's activate method*/ exg2antt1.Chart().PaneWidth(true,0);
	exg2antt1.ColumnAutoResize(false);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exg2antt1.DataSource(rs);
	exg2antt1.SortBarHeight(0);
	exg2antt1.SortBarVisible(true);
	exg2antt1.SortBarCaption("Drag a <b>column</b> header here to group by that column.");
	exg2antt1.AllowGroupBy(true);
	exg2antt1.Layout("multiplesort=\"C1:2\"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(true,0);
}
*/
1824
How do I perform my own sort

// Sort event - Fired when the control sorts a column.
void onEvent_Sort()
{
	COM com_Items;
	anytype var_Items;
	;
	print( "Sort" );
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.ItemPosition(com_Items.ItemByIndex(1),0);
		com_Items.ItemPosition(com_Items.ItemByIndex(0),1);
}

public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.SingleSort(false);
	exg2antt1.SortOnClick(1/*exUserSort*/);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Index")).FormatColumn("0 index ``");
		com_Columns.Add("Data 1");
		com_Columns.Add("Data 2");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem(COMVariant::createFromInt(0));
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(3));
		h = com_Items.AddItem(COMVariant::createFromInt(4));
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(6));
		h = com_Items.AddItem(COMVariant::createFromInt(7));
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(8));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(9));
	exg2antt1.Layout("multiplesort=\"C1:1 C2:2\"");
	exg2antt1.EndUpdate();
}
1823
Is it possible to have a different alignment for parts of the cell's caption

public void init()
{
	COM com_Column,com_Items;
	anytype var_Column,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	/*should be called during the form's activate method*/ exg2antt1.Chart().PaneWidth(true,true);
	exg2antt1.TreeColumnIndex(-1);
	exg2antt1.DrawGridLines(-2/*exRowLines*/);
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Default")); com_Column = var_Column;
		com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.CellHAlignment(com_Items.AddItem("all-left"),COMVariant::createFromInt(0),0/*LeftAlignment*/);
		com_Items.CellHAlignment(com_Items.AddItem("all-center"),COMVariant::createFromInt(0),1/*CenterAlignment*/);
		com_Items.CellHAlignment(com_Items.AddItem("all-right"),COMVariant::createFromInt(0),2/*RightAlignment*/);
		h = com_Items.AddItem("left<c>center<r>right");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),1/*exHTML*/);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(true,true);
}
*/
1822
I have a column with Def(exCellSingleLine) property on False, word-wrapping, and I am wondering if possible to update the column's content while user is resizing it
public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	/*should be called during the form's activate method*/ exg2antt1.Chart().PaneWidth(true,0);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("MultipleLine")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(16/*exCellSingleLine*/,COMVariant::createFromBoolean(false));
			com_Column.Def(64/*exColumnResizeContiguously*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("SingleLine")); com_Column1 = var_Column1;
			com_Column1.Def(16/*exCellSingleLine*/,COMVariant::createFromBoolean(false));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem("This is a bit of long text that should break the line"),COMVariant::createFromInt(1),"This is a bit of long text that should break the line");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(true,0);
}
*/
1821
Is there an other way to detect if a bar is overlapping any other bar

// BarResizing event - Occurs when a bar is moving or resizing.
void onEvent_BarResizing(int   _Item,COMVariant   _Key)
{
	;
	exg2antt1.Refresh();
}

public void init()
{
	COM com_Bar,com_Bar1,com_Bars,com_Chart,com_Column,com_Column1,com_Items;
	anytype var_Bar,var_Bar1,var_Bars,var_Chart,var_Column,var_Column1,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DrawGridLines(2/*exVLines*/);
	exg2antt1.HeaderAppearance(4/*Etched*/);
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	exg2antt1.DefaultItemHeight(22);
	exg2antt1.Columns().Add("Task");
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Intersect / Count")); com_Column = var_Column;
		com_Column.Def(19/*exCellValueToItemBarKey*/,"A");
		com_Column.Def(18/*exCellValueToItemBarProperty*/,COMVariant::createFromInt(521));
		com_Column.LevelKey(COMVariant::createFromInt(1));
	var_Column1 = COM::createFromVariant(exg2antt1.Columns().Add(" / With")); com_Column1 = var_Column1;
		com_Column1.Def(19/*exCellValueToItemBarKey*/,"A");
		com_Column1.Def(18/*exCellValueToItemBarProperty*/,COMVariant::createFromInt(520));
		com_Column1.LevelKey(COMVariant::createFromInt(1));
	exg2antt1.Items().AllowCellValueToItemBar(true);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,148);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.OverlaidType(1/*exOverlaidBarsOffset*/);
			com_Bar.OverlaidGroup("TaskB");
			com_Bar.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(16));
		var_Bars = COM::createFromObject(com_Chart.Bars()); com_Bars = var_Bars;
		var_Bar1 = COM::createFromObject(com_Bars).Add("TaskB"); com_Bar1 = var_Bar1;
			com_Bar1.Pattern(6/*exPatternBDiagonal*/);
			com_Bar1.Def(4/*exBarHAlignCaption*/,COMVariant::createFromInt(18));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("A");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/4/2001",213)),"A","A");
		com_Items.AddBar(h,"TaskB",COMVariant::createFromDate(str2Date("1/3/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"B","B");
		h = com_Items.AddItem("A");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/6/2001",213)),COMVariant::createFromDate(str2Date("1/9/2001",213)),"A","A");
		com_Items.AddBar(h,"TaskB",COMVariant::createFromDate(str2Date("1/10/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"B","B");
		h = com_Items.AddItem("A");
		com_Items.AddBar(h,"TaskB",COMVariant::createFromDate(str2Date("1/6/2001",213)),COMVariant::createFromDate(str2Date("1/9/2001",213)),"B1","B1");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/10/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"A","A");
		com_Items.AddBar(h,"TaskB",COMVariant::createFromDate(str2Date("1/10/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"B2","B2");
		h = com_Items.AddItem("A");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/8/2001",213)),COMVariant::createFromDate(str2Date("1/11/2001",213)),"B1","B1");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/10/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"A","A");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/12/2001",213)),COMVariant::createFromDate(str2Date("1/15/2001",213)),"B2","B2");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,148);
}
*/
1820
How can I get the absolute position of an item
// AddItem event - Occurs after a new Item has been inserted to Items collection.
void onEvent_AddItem(int   _Item)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(_Item,"Task",COMVariant::createFromDate(str2Date("1/2/2017",213)),COMVariant::createFromDate(str2Date("1/5/2017",213)));
}

// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		print( com_Items.CellCaption(exg2antt1.ItemFromPoint(-1,-1,c,hit),"Position") );
}

public void init()
{
	COM com_Chart,com_Column,com_Items;
	anytype var_Chart,var_Column,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2017",213)));
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	exg2antt1.BackColorAlternate(WinApi::RGB2int(240,240,240));
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	COM::createFromVariant(exg2antt1.Columns().Add("Def")).DisplayFilterButton(true);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root");
		com_Items.InsertItem(com_Items.InsertItem(h,,"Child 1"),,"Sub-Child 1");
		com_Items.InsertItem(com_Items.InsertItem(h,,"Child 2"),,"Sub-Child 2");
	exg2antt1.PutItems(exg2antt1.GetItems(COMVariant::createFromInt(-1)));
	exg2antt1.PutItems(exg2antt1.GetItems(COMVariant::createFromInt(-1)));
	exg2antt1.PutItems(exg2antt1.GetItems(COMVariant::createFromInt(-1)));
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Position")); com_Column = var_Column;
		com_Column.FormatColumn("1 apos ``");
		com_Column.Visible(false);
	exg2antt1.EndUpdate();
}
1819
How do I sort the index column as numeric (Method 2)

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void onEvent_AddItem(int   _Item)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.CellData(_Item,COMVariant::createFromInt(1),COMVariant::createFromStr(com_Items.CellCaption(_Item,COMVariant::createFromInt(1))));
}

public void init()
{
	COM com_Column,com_Column1,com_Items;
	anytype var_Column,var_Column1,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.DrawGridLines(-1/*exAllLines*/);
	exg2antt1.ColumnAutoResize(true);
	exg2antt1.ShowFocusRect(false);
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Next")); com_Column = var_Column;
		com_Column.Def(48/*exCellPaddingLeft*/,COMVariant::createFromInt(4));
		com_Column.Def(52/*exHeaderPaddingLeft*/,COMVariant::createFromInt(4));
	var_Column1 = COM::createFromVariant(exg2antt1.Columns().Add("Index")); com_Column1 = var_Column1;
		com_Column1.AllowSizing(false);
		com_Column1.Width(48);
		com_Column1.FormatColumn("(((0 := (1 index ``)) mod 3) case ( default: ``; 0 : `<r><fgcolor=B0B0B0>`; 1: ``; 2 : `<c><fgcolor=808080>` )) + str(=:0)");
		com_Column1.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
		com_Column1.SortType(5/*SortUserData*/);
		com_Column1.Position(0);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("Item 1");
		com_Items.AddItem("Item 2");
		com_Items.AddItem("Item 3");
		com_Items.AddItem("Item 4");
		com_Items.AddItem("Item 5");
		com_Items.AddItem("Item 6");
		com_Items.AddItem("Item 7");
		com_Items.AddItem("Item 8");
		com_Items.AddItem("Item 9");
		com_Items.AddItem("Item 10");
	exg2antt1.EndUpdate();
}
1818
How do I sort the index column as numeric (Method 1)

public void init()
{
	COM com_Column,com_Column1,com_Items;
	anytype var_Column,var_Column1,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Sort Index As String (Default)")); com_Column = var_Column;
		com_Column.FormatColumn("1 index ``");
	var_Column1 = COM::createFromVariant(exg2antt1.Columns().Add("Sort Index As Numeric")); com_Column1 = var_Column1;
		com_Column1.ComputedField("%C0");
		com_Column1.SortType(1/*SortNumeric*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
	exg2antt1.EndUpdate();
}
1817
How can I put icons/images into buttons

public void init()
{
	COM com_Column,com_Items;
	anytype var_Column,var_Items;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ColumnAutoResize(true);
	var_s = "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql";
	var_s = var_s + "Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0";
	var_s = var_s + "ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN";
	var_s = var_s + "AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=";
	exg2antt1.Images(COMVariant::createFromStr(var_s));
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("C+B")); com_Column = var_Column;
		com_Column.AllowSizing(false);
		com_Column.Width(48);
		com_Column.FormatColumn("` <img>` + ( 1 + (1 index ``) mod 3 ) + `</img> `");
		com_Column.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
		com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		com_Column.Def(2/*exCellHasButton*/,COMVariant::createFromBoolean(true));
		com_Column.Def(3/*exCellButtonAutoWidth*/,COMVariant::createFromBoolean(true));
	exg2antt1.Columns().Add("");
	exg2antt1.DrawGridLines(2/*exVLines*/);
	exg2antt1.DefaultItemHeight(20);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
	exg2antt1.EndUpdate();
}
1816
Is it possible to have a CheckBox and Button TOGETHER on all cells in a column

// ButtonClick event - Occurs when user clicks on the cell's button.
void onEvent_ButtonClick(int   _Item,int   _ColIndex,COMVariant   _Key)
{
	;
	print( "ButtonClick" );
	print( _Item );
	print( _Key );
}

// CellStateChanged event - Fired after cell's state has been changed.
void onEvent_CellStateChanged(int   _Item,int   _ColIndex)
{
	;
	print( "CellStateChanged" );
	print( _Item );
}

public void init()
{
	COM com_Column,com_Column1,com_Items;
	anytype var_Column,var_Column1,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ColumnAutoResize(true);
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("")); com_Column = var_Column;
		com_Column.AllowSizing(false);
		com_Column.Width(32);
		com_Column.FormatColumn("1 index ``");
	var_Column1 = COM::createFromVariant(exg2antt1.Columns().Add("Def")); com_Column1 = var_Column1;
		com_Column1.AllowSizing(false);
		com_Column1.Width(48);
		com_Column1.FormatColumn("`     `");
		com_Column1.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		com_Column1.Def(2/*exCellHasButton*/,COMVariant::createFromBoolean(true));
		com_Column1.Def(3/*exCellButtonAutoWidth*/,COMVariant::createFromBoolean(true));
	exg2antt1.Columns().Add("");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
		com_Items.AddItem("");
	exg2antt1.EndUpdate();
}
1815
Does filtering work with umlauts / accents characters

public void init()
{
	COM com_Column,com_Column1,com_Items;
	anytype var_Column,var_Column1,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	/*should be called during the form's activate method*/ exg2antt1.Chart().PaneWidth(true,0);
	var_Column = COM::createFromVariant(exg2antt1.Columns().Add("Names")); com_Column = var_Column;
		com_Column.DisplayFilterButton(true);
		com_Column.FilterType(3/*exPattern*/);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddItem("Mantel");
		com_Items.AddItem("Mechanik");
		com_Items.AddItem("Motor");
		com_Items.AddItem("Murks");
		com_Items.AddItem("Märchen");
		com_Items.AddItem("Möhren");
		com_Items.AddItem("Mühle");
		com_Items.AddItem("Sérigraphie");
	var_Column1 = COM::createFromObject(exg2antt1.Columns()).Item(COMVariant::createFromInt(0)); com_Column1 = var_Column1;
	com_Column1.Filter("*ä*");
	exg2antt1.ApplyFilter();
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(true,0);
}
*/
1814
How can I temporarily disable resizing the overview part of the control

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	exg2antt1.OnResizeControl(1024/*exDisableOverview*/);
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.OverviewVisible(69890/*exOverviewSplitter | exOverviewShowDateTimeScale | exOverviewAllowVerticalScroll | exOverviewShowAllVisible*/);
		com_Chart.OverviewHeight(32);
	exg2antt1.Columns().Add("Column");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Item 1"),"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 2"),"Task",COMVariant::createFromDate(str2Date("2/2/2001",213)),COMVariant::createFromDate(str2Date("2/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 3"),"Task",COMVariant::createFromDate(str2Date("3/2/2001",213)),COMVariant::createFromDate(str2Date("3/11/2001",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1813
Is it possible to resize the overview part of the control at runtime

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_s = "gBFLBCJwBAEHhEJAAEhABVADg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGUYBRgmFgAQhFcZQSBcEgTDaMYzgMBYJhEMQyDSAUIjPEyMg0DjIIwgJIUaw0GSXIRkGQZCh";
	var_s = var_s + "GJooTJQMrTZIEbQxHSkIyRVTmZACS5NRZPYy0FAkQhlFSbJBCOKwVomR5KUxTVg1DJwahLCKULLhGI7KgObIRSJOcZ1XAdCQ0cB0XpAC6LaqSA4nSjKcqwJKEZRJIyjJ";
	var_s = var_s + "wgSrrWhePoJYBVAAQPQdDYaCivK5uWK6PqKUIlZBQGQVNS1MRrLSEcwgPKgAyzDadZzfQAWTZFTQjN61RgtXR6eyoAJ0aziFDVFo0WRlEwacorGhcbgPPrCRrxGBVNwg";
	var_s = var_s + "GOJo4kIeASB0Zw/iGDoym6dobh2XpiDWJo5HMd56h6dxjlICIEhQDQmDOIZUmQZZlAADpYHIEQ3nUGgNhCEIhAkawamAAAYEWRAGB2bA2EqYg2AyA4glgPgSgQYRIEIF";
	var_s = var_s + "oEmEeBWBiBphFAAgPDwDgDEycQ4A0Q5IwkDwjgyWA8k4SIsmUNoPEOFJbD0DhjHINA3E8Q4eDiDojhiYJmg+Ixokic4LmKQxiCkNk2CCX4DmGaA0nAN4NBiDJSDwTgTE";
	var_s = var_s + "ycg4E0WIYlcPJiiiMJZhCTYpgCcw5g2OYOGWGQmCkEJkheYopGoVw1GSGQuA2ExIlOQJcDOZJzEDSJNBiAgiU4Q5GCeChNHkHJygsaBzGaCYimiCY0mMNZoCMWhUDUJ5";
	var_s = var_s + "pkYTIDk6YxwkwO5NlMOoch6JQJm4U4JCIMxWFSKbCBoKIgmJDAuDgKhohKIoTk0GhaHOJgNiMKJuDaaYzHCTYnAyaZmjSKIiDiCghjEYg6AaR4yk0OpOiFSQLAKNgjGc";
	var_s = var_s + "Q40lkMhOmqZo7DKTpzG6Pw3CmYx2HiNAsCqBh8h6Z5bh6T4oC0G4Im+OAtlMNpTjUTYDCKVo2C3QBLi6a5bH6YY4EyehzAGO4wEwDoejwK5rnK95vDgPJsDWTBjjSWAx";
	var_s = var_s + "nEK5aleNhriuawKi8Lp7H8HpHHGXBskyQpxguXwNgMTpDFiRZDnEExfBSPRvHuXwYkycYslae5NjMQwrDGNZxFyHINDsDRTBMKZKnKLIwm2S4xF0Jw8lKTIcm9eA0hyQ";
	var_s = var_s + "wuksM5jiyVQwnQDQIlaVo0EyLwQlGcRNCME5EjKfYXGSWEhDMQ5QnOahHG6KwoFOCoFiOaBNlcdIjiQag7HOL0dwuxKC1aeNQI4BQihNDoEwXowxmh8CIL8Yg8ROBfAS";
	var_s = var_s + "McaIOR6CHBkMgLgrwUjLHkHMG4NQaBzE4MQaIyw5gxEsH0Dw9FBBNA6PUDoLwpjTHqF0N4WQShSHgGwcY2RkhdFCL8bYdwOivDqNse4fRnh5G+PYEgaR1B0E4B4D4ixx";
	var_s = var_s + "B4G8E8SI5R8D+DeJUc4eRPB/EaJ8DwpwojDHUPofwtxYjtH2F4d4sx3j7E+AcXo8B9geFCNYOIHhfg/GmPQPoXw3jZHuPoX4hxuj1H8J8T43RPhDEgM8eo/B/iQGuPwf";
	var_s = var_s + "xEh1guAIAwQAgCAg";
	exg2antt1.VisualAppearance().Add(1,COMVariant::createFromStr(var_s));
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.OverviewVisible(69890/*exOverviewSplitter | exOverviewShowDateTimeScale | exOverviewAllowVerticalScroll | exOverviewShowAllVisible*/);
		com_Chart.OverviewHeight(32);
		com_Chart.OverviewSelBackColor(0x1000000);
		com_Chart.OverviewBackColor(WinApi::RGB2int(250,250,250));
	exg2antt1.Columns().Add("Column");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Item 1"),"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 2"),"Task",COMVariant::createFromDate(str2Date("2/2/2001",213)),COMVariant::createFromDate(str2Date("2/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 3"),"Task",COMVariant::createFromDate(str2Date("3/2/2001",213)),COMVariant::createFromDate(str2Date("3/11/2001",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1812
You've provided examples of how to create bars for each record of a MS Access table, however I would like to create a database connected Gantt that has multiple bars per item/resource. Could you please advise

// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection.
void onEvent_AddGroupItem(int   _Item)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(_Item,"Summary",com_Items.CellValue(_Item,COMVariant::createFromInt(2)),com_Items.CellValue(_Item,COMVariant::createFromInt(4)),"0");
		com_Items.DefineSummaryBars(_Item,"0",-3,"0");
		com_Items.AddBar(_Item,"SummaryB",com_Items.CellValue(_Item,COMVariant::createFromInt(2)),com_Items.CellValue(_Item,COMVariant::createFromInt(4)),"1");
		com_Items.DefineSummaryBars(_Item,"1",-3,"1");
		com_Items.ItemBackColor(_Item,WinApi::RGB2int(240,240,240));
	exg2antt1.Chart().ItemBackColor(_Item,WinApi::RGB2int(240,240,240));
}

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void onEvent_AddItem(int   _Item)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(_Item,"Task",com_Items.CellValue(_Item,COMVariant::createFromInt(2)),com_Items.CellValue(_Item,COMVariant::createFromInt(4)),com_Items.ItemBar(_Item,"",256/*exBarsCount*/));
		com_Items.AddBar(_Item,"TaskB",com_Items.CellValue(_Item,COMVariant::createFromInt(3)),com_Items.CellValue(_Item,COMVariant::createFromInt(4)),com_Items.ItemBar(_Item,"",256/*exBarsCount*/));
}

// MouseDown event - Occurs when the user presses a mouse button.
void onEvent_MouseDown(int   _Button,int   _Shift,int   _X,int   _Y)
{
	int i;
	;
	i = exg2antt1.ItemFromPoint(-1,-1,c,hit);
	exg2antt1.FullRowSelect(exg2antt1.Columns().Item(c).Data());
}

public void init()
{
	COM com_Bar,com_Bar1,com_Bar2,com_Bar3,com_Bars,com_Chart,com_Column,com_rs;
	anytype rs,var_Bar,var_Bar1,var_Bar2,var_Bar3,var_Bars,var_Chart,var_Column;
	int i;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ScrollBySingleLine(true);
	exg2antt1.HeaderHeight(22);
	exg2antt1.HeaderAppearance(1/*Flat*/);
	exg2antt1.BackColorLock(WinApi::RGB2int(240,240,240));
	exg2antt1.BackColorHeader(exg2antt1.BackColorLock());
	exg2antt1.HasLines(0/*exNoLine*/);
	exg2antt1.ColumnAutoResize(false);
	exg2antt1.SortBarVisible(false);
	exg2antt1.AllowGroupBy(true);
	exg2antt1.ReadOnly(-1/*exReadOnly*/);
	exg2antt1.ShowFocusRect(false);
	exg2antt1.CountLockedColumns(1);
	exg2antt1.AutoDrag(16/*exAutoDragScroll*/);
	exg2antt1.SingleSort(false);
	exg2antt1.ColumnsAllowSizing(true);
	exg2antt1.DrawGridLines(-1/*exAllLines*/);
	exg2antt1.GridLineStyle(48/*exGridLinesSolid*/);
	exg2antt1.GridLineColor(WinApi::RGB2int(220,220,220));
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("9/1/1994",213)));
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,256);
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar = var_Bar;
			com_Bar.Height(15);
			com_Bar.Color(WinApi::RGB2int(128,128,128));
			com_Bar.StartColor(WinApi::RGB2int(204,204,0));
			com_Bar.EndColor(com_Bar.StartColor());
			com_Bar.OverlaidType(3/*exOverlaidBarsStack*/);
			com_Bar.OverlaidGroup("Task,TaskB");
			com_Bar.Pattern(96/*exPatternGradientVBox | exPatternBox*/);
		var_Bars = COM::createFromObject(com_Chart.Bars()); com_Bars = var_Bars;
		var_Bar1 = COM::createFromObject(com_Bars).Copy("Task","TaskB"); com_Bar1 = var_Bar1;
			com_Bar1.Color(WinApi::RGB2int(128,128,128));
			com_Bar1.StartColor(WinApi::RGB2int(153,153,0));
			com_Bar1.EndColor(com_Bar1.StartColor());
		var_Bar2 = COM::createFromObject(com_Chart.Bars()).Item("Summary"); com_Bar2 = var_Bar2;
			com_Bar2.OverlaidType(3/*exOverlaidBarsStack*/);
			com_Bar2.OverlaidGroup("Summary,SummaryB");
			com_Bar2.Color(WinApi::RGB2int(204,204,0));
			com_Bar2.StartColor(com_Bar2.Color());
			com_Bar2.EndColor(com_Bar2.Color());
		var_Bars = COM::createFromObject(com_Chart.Bars()); com_Bars = var_Bars;
		var_Bar3 = COM::createFromObject(com_Bars).Copy("Summary","SummaryB"); com_Bar3 = var_Bar3;
			com_Bar3.Color(WinApi::RGB2int(153,153,0));
			com_Bar3.StartColor(com_Bar3.Color());
			com_Bar3.EndColor(com_Bar3.Color());
	exg2antt1.BackColorSortBar(exg2antt1.BackColor());
	exg2antt1.ColumnAutoResize(false);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exg2antt1.DataSource(rs);
	exg2antt1.Debug(true);
	var_Column = COM::createFromObject(exg2antt1.Columns()).Item(COMVariant::createFromInt(0)); com_Column = var_Column;
	com_Column.Data(COMVariant::createFromInt(-1));
	exg2antt1.Layout("singlesort=\"C5:1\";multiplesort=\" C1:2\"");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,256);
}
*/
1811
How can I filter for multiple captions on a single column, using OR clause

public void init()
{
	COM com_Column,com_Columns,com_Items;
	anytype var_Column,var_Columns,var_Items;
	int h0;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ColumnAutoResize(true);
	exg2antt1.ContinueColumnScroll(0);
	exg2antt1.MarkSearchColumn(true);
	exg2antt1.SearchColumnIndex(1);
	exg2antt1.FilterBarPromptVisible(true);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		var_Column = COM::createFromVariant(com_Columns.Add("Title")); com_Column = var_Column;
			com_Column.Width(96);
		com_Columns.Add("City");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exg2antt1.FilterBarPromptColumns("1");
	exg2antt1.FilterBarPromptPattern("Vice Inside");
	exg2antt1.FilterBarPromptType(2/*exFilterPromptContainsAny*/);
	exg2antt1.EndUpdate();
}
1810
How can I filter for multiple captions on a single column, using AND clause

public void init()
{
	COM com_Column,com_Columns,com_Items;
	anytype var_Column,var_Columns,var_Items;
	int h0;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ColumnAutoResize(true);
	exg2antt1.ContinueColumnScroll(0);
	exg2antt1.MarkSearchColumn(true);
	exg2antt1.SearchColumnIndex(1);
	exg2antt1.FilterBarPromptVisible(true);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		var_Column = COM::createFromVariant(com_Columns.Add("Title")); com_Column = var_Column;
			com_Column.Width(96);
		com_Columns.Add("City");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exg2antt1.FilterBarPromptColumns("1");
	exg2antt1.FilterBarPromptPattern("Vice Sales");
	exg2antt1.FilterBarPromptType(1/*exFilterPromptContainsAll*/);
	exg2antt1.EndUpdate();
}
1809
How can I display the limits/margins of the project, in the overview part of the control

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	str var_s;
	;

	super();

	exg2antt1.BeginUpdate();
	var_s = "gBFLBCJwBAEHhEJAAEhABVADg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGUYBRgmFgAQhFcZQSBcEgTDaMYzgMBYJhEMQyDSAUIjPEyMg0DjIIwgJIUaw0GSXIRkGQZCh";
	var_s = var_s + "GJooTJQMrTZIEbQxHSkIyRVTmZACS5NRZPYy0FAkQhlFSbJBCOKwVomR5KUxTVg1DJwahLCKULLhGI7KgObIRSJOcZ1XAdCQ0cB0XpAC6LaqSA4nSjKcqwJKEZRJIyjJ";
	var_s = var_s + "wgSrrWhePoJYBVAAQPQdDYaCivK5uWK6PqKUIlZBQGQVNS1MRrLSEcwgPKgAyzDadZzfQAWTZFTQjN61RgtXR6eyoAJ0aziFDVFo0WRlEwacorGhcbgPPrCRrxGBVNwg";
	var_s = var_s + "GOJo4kIeASB0Zw/iGDoym6dobh2XpiDWJo5HMd56h6dxjlICIEhQDQmDOIZUmQZZlAADpYHIEQ3nUGgNhCEIhAkawamAAAYEWRAGB2bA2EqYg2AyA4glgPgSgQYRIEIF";
	var_s = var_s + "oEmEeBWBiBphFAAgPDwDgDEycQ4A0Q5IwkDwjgyWA8k4SIsmUNoPEOFJbD0DhjHINA3E8Q4eDiDojhiYJmg+Ixokic4LmKQxiCkNk2CCX4DmGaA0nAN4NBiDJSDwTgTE";
	var_s = var_s + "ycg4E0WIYlcPJiiiMJZhCTYpgCcw5g2OYOGWGQmCkEJkheYopGoVw1GSGQuA2ExIlOQJcDOZJzEDSJNBiAgiU4Q5GCeChNHkHJygsaBzGaCYimiCY0mMNZoCMWhUDUJ5";
	var_s = var_s + "pkYTIDk6YxwkwO5NlMOoch6JQJm4U4JCIMxWFSKbCBoKIgmJDAuDgKhohKIoTk0GhaHOJgNiMKJuDaaYzHCTYnAyaZmjSKIiDiCghjEYg6AaR4yk0OpOiFSQLAKNgjGc";
	var_s = var_s + "Q40lkMhOmqZo7DKTpzG6Pw3CmYx2HiNAsCqBh8h6Z5bh6T4oC0G4Im+OAtlMNpTjUTYDCKVo2C3QBLi6a5bH6YY4EyehzAGO4wEwDoejwK5rnK95vDgPJsDWTBjjSWAx";
	var_s = var_s + "nEK5aleNhriuawKi8Lp7H8HpHHGXBskyQpxguXwNgMTpDFiRZDnEExfBSPRvHuXwYkycYslae5NjMQwrDGNZxFyHINDsDRTBMKZKnKLIwm2S4xF0Jw8lKTIcm9eA0hyQ";
	var_s = var_s + "wuksM5jiyVQwnQDQIlaVo0EyLwQlGcRNCME5EjKfYXGSWEhDMQ5QnOahHG6KwoFOCoFiOaBNlcdIjiQag7HOL0dwuxKC1aeNQI4BQihNDoEwXowxmh8CIL8Yg8ROBfAS";
	var_s = var_s + "McaIOR6CHBkMgLgrwUjLHkHMG4NQaBzE4MQaIyw5gxEsH0Dw9FBBNA6PUDoLwpjTHqF0N4WQShSHgGwcY2RkhdFCL8bYdwOivDqNse4fRnh5G+PYEgaR1B0E4B4D4ixx";
	var_s = var_s + "B4G8E8SI5R8D+DeJUc4eRPB/EaJ8DwpwojDHUPofwtxYjtH2F4d4sx3j7E+AcXo8B9geFCNYOIHhfg/GmPQPoXw3jZHuPoX4hxuj1H8J8T43RPhDEgM8eo/B/iQGuPwf";
	var_s = var_s + "xEh1guAIAwQAgCAg";
	exg2antt1.VisualAppearance().Add(1,COMVariant::createFromStr(var_s));
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.OverviewVisible(31746/*0x7c02 | exOverviewShowSelMargins | exOverviewShowMargins | exOverviewShowDateTimeScaleBottom | exOverviewShowAllVisible*/);
		com_Chart.OverviewHeight(64);
		com_Chart.OverviewSelBackColor(0x1000000);
		com_Chart.OverviewBackColor(WinApi::RGB2int(250,250,250));
	exg2antt1.Columns().Add("Column");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Item 1"),"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 2"),"Task",COMVariant::createFromDate(str2Date("2/2/2001",213)),COMVariant::createFromDate(str2Date("2/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 3"),"Task",COMVariant::createFromDate(str2Date("3/2/2001",213)),COMVariant::createFromDate(str2Date("3/11/2001",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1808
Is it possible to display a time-scale for the overview part of the control (separated)

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.OverviewVisible(5122/*exOverviewShowDateTimeScaleSplit | exOverviewShowAllVisible*/);
		com_Chart.OverviewHeight(48);
		com_Chart.LevelCount(2);
	exg2antt1.Columns().Add("Column");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Item 1"),"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 2"),"Task",COMVariant::createFromDate(str2Date("2/2/2001",213)),COMVariant::createFromDate(str2Date("2/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 3"),"Task",COMVariant::createFromDate(str2Date("3/2/2001",213)),COMVariant::createFromDate(str2Date("3/11/2001",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1807
Is it possible to display a time-scale for the overview part of the control

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.OverviewVisible(4098/*exOverviewShowDateTimeScale | exOverviewShowAllVisible*/);
		com_Chart.LevelCount(2);
	exg2antt1.Columns().Add("Column");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Item 1"),"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 2"),"Task",COMVariant::createFromDate(str2Date("2/2/2001",213)),COMVariant::createFromDate(str2Date("2/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 3"),"Task",COMVariant::createFromDate(str2Date("3/2/2001",213)),COMVariant::createFromDate(str2Date("3/11/2001",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1806
How can I display the time-scale only, in the overview part of the control

public void init()
{
	COM com_Chart,com_Items;
	anytype var_Chart,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,48);
		com_Chart.OverviewVisible(4610/*exOverviewShowDateTimeScale | exOverviewHideBars | exOverviewShowAllVisible*/);
		com_Chart.LevelCount(2);
	exg2antt1.Columns().Add("Column");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.AddBar(com_Items.AddItem("Item 1"),"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 2"),"Task",COMVariant::createFromDate(str2Date("2/2/2001",213)),COMVariant::createFromDate(str2Date("2/11/2001",213)));
		com_Items.AddBar(com_Items.AddItem("Item 3"),"Task",COMVariant::createFromDate(str2Date("3/2/2001",213)),COMVariant::createFromDate(str2Date("3/11/2001",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,48);
}
*/
1805
How can I detect that the mouse pointer is within an InsideZoom object
// MouseMove event - Occurs when the user moves the mouse.
void onEvent_MouseMove(int   _Button,int   _Shift,int   _X,int   _Y)
{
	COM com_Chart,com_iz;
	Date d;
	anytype iz,var_Chart;
	;
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		d = com_Chart.DateFromPoint(-1,-1);
		iz = COM::createFromObject(com_Chart.InsideZooms()).Contains(d); com_iz = iz;
		print( d );
		print( "If the iz object is nothing, the date is not zoomed, else it is." );
		print( iz );
}

public void init()
{
	COM com_Chart,com_InsideZooms,com_iz;
	Date d;
	anytype iz,var_Chart,var_InsideZooms;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(0,0);
		com_Chart.LevelCount(2);
		com_Chart.FirstWeekDay(1/*exMonday*/);
		com_Chart.AllowInsideZoom(true);
		var_InsideZooms = COM::createFromObject(com_Chart.InsideZooms()); com_InsideZooms = var_InsideZooms;
		com_InsideZooms.Add(COMVariant::createFromDate(str2Date("1/10/2001",213)));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(0,0);
}
*/
1804
Is it possible to word-wrap text/caption on the bar, so it gets displayed on multiple lines

public void init()
{
	COM com_Bar,com_Bar1,com_Bars,com_Chart,com_Items;
	anytype var_Bar,var_Bar1,var_Bars,var_Chart,var_Items;
	int h;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ScrollBySingleLine(true);
	exg2antt1.ItemsAllowSizing(-1/*exResizeItem*/);
	exg2antt1.DrawGridLines(1/*exHLines*/);
	exg2antt1.HeaderHeight(28);
	exg2antt1.DefaultItemHeight(24);
	exg2antt1.BackColorLevelHeader(exg2antt1.BackColor());
	exg2antt1.HeaderAppearance(5/*Bump*/);
	exg2antt1.Columns().Add("Tasks");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
		com_Chart.LevelCount(2);
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		com_Chart.DrawGridLines(1/*exHLines*/);
		var_Bars = COM::createFromObject(com_Chart.Bars()); com_Bars = var_Bars;
		var_Bar = COM::createFromObject(com_Bars).Copy("Task","TaskB"); com_Bar = var_Bar;
			com_Bar.Height(15);
			com_Bar.Pattern(32/*exPatternBox*/);
			com_Bar.StartColor(WinApi::RGB2int(204,232,255));
			com_Bar.EndColor(com_Bar.StartColor());
			com_Bar.Color(WinApi::RGB2int(0,0,255));
		var_Bar1 = COM::createFromObject(com_Chart.Bars()).Item("Task"); com_Bar1 = var_Bar1;
			com_Bar1.Height(-1);
			com_Bar1.Pattern(32/*exPatternBox*/);
			com_Bar1.StartColor(WinApi::RGB2int(204,232,255));
			com_Bar1.EndColor(com_Bar1.StartColor());
			com_Bar1.Color(WinApi::RGB2int(0,0,255));
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Word-Wrap Inside");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/9/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"A1");
		com_Items.ItemBar(h,"A1",53/*exBarBackgroundExt*/,"none[(2,2,100%-4,100%-4),text=`This is a bit of text that should break the line`,wordwrap]");
		h = com_Items.AddItem("Word-Wrap Inside");
		com_Items.AddBar(h,"Task",COMVariant::createFromDate(str2Date("1/5/2001",213)),COMVariant::createFromDate(str2Date("1/19/2001",213)),"A2");
		com_Items.ItemBar(h,"A2",53/*exBarBackgroundExt*/,"none[(2,2,100%-4,100%-4),align=0x11,text=`This is a bit of text that should break the line`,wordwrap]");
		h = com_Items.AddItem("Word-Wrap Back");
		com_Items.AddBar(h,"TaskB",COMVariant::createFromDate(str2Date("1/9/2001",213)),COMVariant::createFromDate(str2Date("1/13/2001",213)),"A3");
		com_Items.ItemBar(h,"A3",53/*exBarBackgroundExt*/,"client[align=0x11,text=`This is a bit of text that should break the line`,wordwrap]");
		com_Items.ItemBar(h,"A3",54/*exBarBackgroundExtFlags*/,COMVariant::createFromInt(2));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/
1803
Can I set the search box / filterbarprompt to invisible, so I can use my own input and *string* via VBA
public void init()
{
	COM com_Columns,com_Items;
	anytype var_Columns,var_Items;
	int h0;
	;

	super();

	exg2antt1.BeginUpdate();
	exg2antt1.ColumnAutoResize(true);
	exg2antt1.ContinueColumnScroll(0);
	exg2antt1.MarkSearchColumn(false);
	exg2antt1.SearchColumnIndex(1);
	exg2antt1.FilterBarHeight(0);
	exg2antt1.FilterBarPromptVisible(true);
	/*should be called during the form's activate method*/ exg2antt1.Chart().PaneWidth(true,0);
	var_Columns = exg2antt1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Name")).Width(96);
		COM::createFromVariant(com_Columns.Add("Title")).Width(96);
		com_Columns.Add("City");
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		h0 = com_Items.AddItem("Nancy Davolio");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Andrew Fuller");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Vice President, Sales");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Tacoma");
		com_Items.SelectItem(h0,true);
		h0 = com_Items.AddItem("Janet Leverling");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Kirkland");
		h0 = com_Items.AddItem("Margaret Peacock");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Redmond");
		h0 = com_Items.AddItem("Steven Buchanan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Manager");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Michael Suyama");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Robert King");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
		h0 = com_Items.AddItem("Laura Callahan");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Inside Sales Coordinator");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"Seattle");
		h0 = com_Items.AddItem("Anne Dodsworth");
		com_Items.CellValue(h0,COMVariant::createFromInt(1),"Sales Representative");
		com_Items.CellValue(h0,COMVariant::createFromInt(2),"London");
	exg2antt1.FilterBarPromptPattern("London");
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(true,0);
}
*/
1802
How to load a hierarchy using the control's DataSource property (Parent-ID-Relation)

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void onEvent_AddItem(int   _Item)
{
	COM com_Items;
	anytype var_Items;
	;
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		com_Items.SetParent(_Item,com_Items.FindItem(com_Items.CellValue(_Item,"ReportsTo"),"EmployeeID"));
}

public void init()
{
	COM com_Items,com_rs;
	anytype rs,var_Items;
	;

	super();

	exg2antt1.BeginUpdate();
	/*should be called during the form's activate method*/ exg2antt1.Chart().PaneWidth(true,0);
	exg2antt1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exg2antt1.ColumnAutoResize(false);
	exg2antt1.ContinueColumnScroll(false);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("SELECT * FROM Employees ORDER BY ReportsTo","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExG2antt\\Sample\\Access\\misc.accdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exg2antt1.DataSource(rs);
	exg2antt1.Items().ExpandItem(0,true);
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(true,0);
}
*/
1801
How can I highlight the limits/margins of a summary bar, according with the child bars

public void init()
{
	COM com_Appearance,com_Bar,com_Chart,com_Items;
	anytype var_Appearance,var_Bar,var_Chart,var_Items;
	int hSummary,hTask;
	str var_s,var_s1;
	;

	super();

	exg2antt1.BeginUpdate();
	var_Appearance = exg2antt1.VisualAppearance(); com_Appearance = var_Appearance;
		var_s = "gBFLBCJwBAEHhEJAAEhABRkIQAAYAQGKQYhiAKBQAGaAoDDcMA4QwAAyjhwkAIIQK/cZRPC0Ow8GSEZAgOKIch6FgCQjEIxDKIsVRZEiDYRmGLpIiOJoWSQBUIyJKoAQ";
		var_s = var_s + "0f6fIziaTpNiGL4yTBPMzyJRcEx1GyBZ5negaAo2AwIQiUBomGahajkMqZQAJaCSCI2Y4eDZCIoTXR1WAxDq3ZruKpLUpOc4DOrEMIwCEBA=";
		com_Appearance.Add(1,COMVariant::createFromStr(var_s));
		com_Appearance.Add(2,"CP:1 -4 0 5 0");
		var_s1 = "gBFLBCJwBAEHhEJAAEhABOMGACAADACAxSDEMQBQKAAzQFAYbhgHCGAAGUYBRgmFgAQhFcZQSKUOQTDKMIziYBYJhEMQyDAAUIjOKsIhkGYcZAGQBJCjWGodQRHc5TNC";
		var_s1 = var_s1 + "MTRRECDY4kAYpAiKRYbSpAcyQHQ8bQtHwYKAoOg6JjWIAHRqCMI0XINHQ3FwaRJsCwoJhOZIDWZENDQTSsLSxJSkIRfe4wArNf4XVBVMqSdKEZRJLybJwADApAo2eIlQ";
		var_s1 = var_s1 + "jJdQ4TSdBSdQwDLYhECpbwCT6JT7jGLQJZsNyvBLIYDrKA8UozFqHQRYNhxDZNShhM6rMigPQQAq8AKlRbVNzXLamLwHRS9BpoORhUjHD4bVxVOyaPpAAaBFbhI44QZO";
		var_s1 = var_s1 + "HYNYfjgaI0BySp8HMVZdlgaxtBqexWkqOw1lGbZzlwfQ0AwYR/gka5FiMGpgkQYYviGV4kBUWpmlsaYGHMEgACECQUAaEYMHQHRHCGFRBECRJkGQQgTGCVBoDYQhCgQJ";
		var_s1 = var_s1 + "ZoG4EIAGEFwGB+dwxHaB5iAabReggYhGnUToJGIRgCCiCBdjiNguGmYo4gIKoMGIKIeDSCYTGiXg4EITo3hAiJAICA==";
		com_Appearance.Add(3,COMVariant::createFromStr(var_s1));
	exg2antt1.Columns().Add("Task");
	var_Chart = exg2antt1.Chart(); com_Chart = var_Chart;
	/*should be called during the form's activate method*/ 	com_Chart.PaneWidth(false,128);
		com_Chart.FirstVisibleDate(COMVariant::createFromDate(str2Date("1/1/2001",213)));
		var_Bar = COM::createFromObject(com_Chart.Bars()).Item("Summary"); com_Bar = var_Bar;
		com_Bar.Color(0x3000000);
	var_Items = exg2antt1.Items(); com_Items = var_Items;
		hSummary = com_Items.AddItem("Summary");
		com_Items.AddBar(hSummary,"Summary",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/2/2001",213)),"");
		hTask = com_Items.InsertItem(hSummary,,"Task A");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/2/2001",213)),COMVariant::createFromDate(str2Date("1/5/2001",213)),"K1");
		hTask = com_Items.InsertItem(hSummary,,"Task B");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/4/2001",213)),COMVariant::createFromDate(str2Date("1/8/2001",213)),"K2");
		hTask = com_Items.InsertItem(hSummary,,"Task C");
		com_Items.AddBar(hTask,"Task",COMVariant::createFromDate(str2Date("1/6/2001",213)),COMVariant::createFromDate(str2Date("1/10/2001",213)),"K3");
		com_Items.ExpandItem(hSummary,true);
		com_Items.DefineSummaryBars(hSummary,"",-1,"<*>");
		com_Items.ItemBar(hSummary,"",34/*exSummaryBarBackColor*/,COMVariant::createFromInt(33554432));
	exg2antt1.EndUpdate();
}

/*
public void activate(boolean _active)
{
	;

	super(_active);

	exg2antt1.Chart().PaneWidth(false,128);
}
*/